CDH集群搭建全量文档

版权声明:本文为博主大壮原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33792843/article/details/90206814

CDH集群搭建全量文档

很快公司申请下来了一批非常牛逼的机器作为新的生产环境,老的节点机器考虑后续回收。。。

接下来就要展示本次CDH的开发环境的全部制作情况,如果有任何的疑问,请留言告知我改正,基本上遇到的坑也都在本文档中有所处理,接下来,就是所有文档。


同学给的文档   
https://blog.csdn.net/dongyunlon/article/details/79755791

离线的
https://www.cnblogs.com/CaptainLin/p/7089766.html


cdh完美卸载文档
https://blog.csdn.net/weixin_35852328/article/details/81774627


秘钥:
https://blog.csdn.net/u010003835/article/details/85006786

https://blog.csdn.net/u010003835/article/details/85007946

useradd --system --home=/opt/cm-5.8.0/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm


这篇文章比较吊!!!
https://www.jianshu.com/p/d2c524ec0d1b
可行的。。。

这个也很吊。。。
http://www.aboutyun.com/thread-9075-1-1.html

照样给的好像也不错

https://www.cnblogs.com/CaptainLin/p/7089766.html

文档记录:
1.Starting cloudera-scm-server:                              [失败]

service --status -all

cloudera-scm-server 已死,但 pid 文件仍存


以下为全部安装3变都成功的自己爬坑的文档了。

1.jdk安装与配置

                     yum -y install java-1.8.0-openjdk-devel.x86_64


                    修改/etc/profile并且source /etc/profile

                    JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64
                    JRE_HOME=$JAVA_HOME/jre
                    PATH=$PATH:$JAVA_HOME/bin
                    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
                    export JAVA_HOME
                    export JRE_HOME
                    export PATH
                    export CLASSPATH

2.用一下阿里的yum源
                    yum install -y lrzsz
                    https://opsx.alibaba.com/mirror

                    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

                    172.16.1.117   node1
                    172.16.1.118   node2
                    172.16.1.119   node3


3.关闭防火墙

                        注意: 需要在所有的节点上执行,因为涉及到的端口太多了,临时关闭防火墙是为了安装起来更方便,安装完毕后可以根据需要设置防火墙策略,保证集群安全。

                关闭防火墙:

                service iptables stop (临时关闭)  
                chkconfig iptables off (重启后生效)
                关闭SELINUX(实际安装过程中发现没有关闭也是可以的,不知道会不会有问题,还需进一步进行验证):

                setenforce 0 (临时生效)  
                修改 /etc/selinux/config 下的 SELINUX=disabled (重启后永久生效)


                CentOS 7.0
                 
                一、配置防火墙,开启80端口、3306端口

                默认使用的是firewall作为防火墙,这里改为iptables防火墙。

                1、关闭firewall:

                systemctl stop firewalld.service #停止firewall

                systemctl disable firewalld.service #禁止firewall开机启动


4.所有节点配置NTP服务
                                        集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。 具体思路如下:

                                        master节点作为ntp服务器与外界对时中心同步时间,随后对所有datanode节点提供时间同步服务。

                                        所有datanode节点以master节点为基础同步时间。

                                        所有节点安装相关组件:yum install ntp。完成后,配置开机启动:chkconfig ntpd on,检查是否设置成功:chkconfig --list ntpd其中2-5为on状态就代表成功。

                                        centos 7     systemctl enable ntpd  systemctl is-enabled ntpd 

                                         

                                        主节点配置

                                         位置/etc/ntp.conf

                                        在配置之前,先使用ntpdate手动同步一下时间,免得本机与对时中心时间差距太大,使得ntpd不能正常同步。这里选用202.112.10.36作为对时中心,ntpdate -u 202.112.10.36。
                                        
                                        最好是是用清华大学的
                                        ntpdate -u 210.72.145.44

                                        ntp服务只有一个配置文件,配置好了就OK。 这里只给出有用的配置,不需要的配置都用#注掉,这里就不在给出:

                                        driftfile /var/lib/ntp/drift
                                        restrict 127.0.0.1
                                        restrict -6 ::1
                                        restrict default nomodify notrap 
                                        server cn.ntp.org.cn prefer
                                        includefile /etc/ntp/crypto/pw
                                        keys /etc/ntp/keys
                                        配置文件完成,保存退出,启动服务,执行如下命令:1 service ntpd start

                                        2 centos7 systemctl start ntpd  ntpstat

                                         

                                        检查是否成功,用ntpstat命令查看同步状态,出现以下状态代表启动成功:

                                        synchronised to NTP server () at stratum 2
                                        time correct to within 74 ms
                                        polling server every 128 s
                                        如果出现异常请等待几分钟,一般等待5-10分钟才能同步。

                                        配置ntp客户端(所有datanode节点)

                                        driftfile /var/lib/ntp/drift
                                        restrict 127.0.0.1
                                        restrict -6 ::1
                                        restrict default kod nomodify notrap nopeer noquery
                                        restrict -6 default kod nomodify notrap nopeer noquery
                                        #这里是主节点的主机名或者ip
                                        server n1
                                        includefile /etc/ntp/crypto/pw
                                        keys /etc/ntp/keys
                                        ok保存退出,请求服务器前,请先使用ntpdate手动同步一下时间:ntpdate -u n1 (主节点ntp服务器)

                                        这里可能出现同步失败的情况,请不要着急,一般是本地的ntp服务器还没有正常启动,一般需要等待5-10分钟才可以正常同步。启动服务:service ntpd start

                                        因为是连接内网,这次启动等待的时间会比master节点快一些,但是也需要耐心等待一会儿。

            所有机器改成北京时间的方法:
            
            在国外主机上将Linux系统时间修改为北京时间的方法
            [root@centos ~]#date 
            Sun Aug 14 23:18:41 EDT 2011

             

            [root@centos ~]# rm -rf /etc/localtime 
            [root@centos ~]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

[root@centos ~]# date 

Mon Aug 15 11:20:00 CST 2011


5.centos 7 mysql  

            参考:
            https://www.cnblogs.com/ianduin/p/7679239.html
    
            root /  MyNewPass4!


            
            
                    cd /opt
        wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
        yum localinstall mysql57-community-release-el7-8.noarch.rpm
        
        
        检查mysql源是否安装成功
        shell> yum repolist enabled | grep "mysql.*-community.*"


        yum install mysql-community-server
        systemctl start mysqld
        systemctl status mysqld
        
        开机启动:
        systemctl enable mysqld
        systemctl daemon-reload
        
        
        mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改:

        shell> grep 'temporary password' /var/log/mysqld.log
        
        
        
        
        shell> mysql -u root -p
        mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
        
        
        
        create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
        create database report_manager DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
        create database ozzie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
        create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;


            create database cm_server DEFAULT CHARACTER SET utf8;
            grant all on *.* TO 'root'@'%' IDENTIFIED BY 'MyNewPass4!';
            
            flush privileges;
        
        
        
        systemctl restart mysqld
            
            
            
            
            
            
            

6.下载yum源


        参考:
        https://archive.cloudera.com/cm5/redhat/7/x86_64/cm/cloudera-manager.repo


        
        

        放到每个节点的
        /etc/yum.repos.d/

        

7.然后配置cdh数据库

            
        下载(时间很久耐心等待):
        sudo yum install cloudera-manager-daemons cloudera-manager-server -y


            配置mysql连接的bin.jar
            
            可以去这里下载:
            http://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.21
            
            
            
            我用的是   mysql-connector-java-5.1.34-bin.jar
            将mysql-connector-java-5.1.34-bin.jar放到  如下目录
            /usr/share/cmf/lib/

            格式:/usr/share/cmf/schema/scm_prepare_database.sh database-type [options] database-name username password

            执行:
            /usr/share/cmf/schema/scm_prepare_database.sh mysql cm_server root MyNewPass4!


            应该会看到成功。
            [                          main] DbCommandExecutor              INFO  Successfully connected to database.
                All done, your SCM database is configured correctly!


8.每台服务器安装   agent

                    下载(时间很久耐心等待):
                    sudo yum install cloudera-manager-agent cloudera-manager-daemons -y

                    vim /etc/cloudera-scm-agent/config.ini

                    hostname写成主服务器

                    执行:

                    sudo service cloudera-scm-agent start # 所有服务器
                    sudo service cloudera-scm-server start # Cloudera Manager Server服务器
                    
                    
                    稍后几分钟,等待Cloudera Manager Server启动成功。在Cloudera Manager Server服务器上。可以查看/var/log/cloudera-scm-server/cloudera-scm-server.log日志,观察启动的过程。如果出错,请参考Troubleshooting Installation and Upgrade Problems。
                    
                    解决问题的地方:
                    https://www.cloudera.com/documentation/enterprise/latest/topics/cm_ig_troubleshooting.html


                    
                    
                    请一定注意两点,
                    1.一定要等几分钟,看到日志里面已经启动了7180端口才行
                    2.一定确定每个节点的主机名已经更改,我是更改了之后,重启机器才行,不然主机名称不对!切记!


9.配置

                    http://172.16.1.242:7180/cmf/login


                    默认的用户名和密码均为admin:

                    一路选择到了一个地方报错。

                    安装失败。 无法接收 Agent 发出的检测信号。
                    参考文档:            https://www.oschina.net/question/3964891_2287725
                    cat /etc/hosts
                    cat /etc/hostname 
                    cat  /etc/sysconfig/network


10.遇到问题卡在了44%

            自己上传


            将CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中(parcel-repo需要手动创建)。

            相关的文件如下:

            *-el6.parcel
            *-el6.parcel.sha1
            manifest.json
            最后将CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha1,重命名为CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha,这点必须注意,否则,系统会重新下载CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel文件。

            相关启动脚本

            sudo service cloudera-scm-agent restart # 所有服务器
            sudo service cloudera-scm-server restart # Cloudera Manager Server服务器

            我们启动的其实是个service脚本,需要停止服务将以上的start参数改为stop就可以了,重启是restart。
            
            
            
            
            然后在集群管理页面有一个,选择移除资源,选英文的那个选项里,然后重新搜索机器,想要出线页面就得等到management 重启即可。。。。
            
            报错:
            Exhausted available authentication methods 
            
            
            重新尝试安装失败的主机即可


11.安装配置过程中需要创建很多mysql数据库配置


        create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
        create database report_manager DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
        create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
        create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;


        grant all privileges on *.* to 'root'@'node1' identified by 'MyNewPass4!' with grant option;
        flush privileges;

        配置报错邮件服务
         public static final String MAIL_TO ="[email protected]";
        public static final String MAIL_FROM ="[email protected]";
        public static final String MAIL_PASSWORD ="BDserver110*";
        public static final String MAIL_SMTPHOST ="smtphm.qiye.163.com";
        
        
        
        
        
        
        
        
        注意hive创建源数据可能会报错,因为
        终于到安装各个服务的地方了,注意,这里安装Hive的时候可能会报错,因为我们使用了MySql作为hive的元数据存储,hive默认没有带mysql的驱动,通过以下命令拷贝一个就行了:

            cd /opt/cloudera/parcels/CDH-5.1.3-1.cdh5.1.3.p0.12/lib/hive/lib/
            上传一下就行了


        可能oozie也需要上传一下,
        cd /opt/cloudera/parcels/CDH-5.16.1-1.cdh5.16.1.p0.3/lib/oozie/lib
        
        除此以外还要
        
        对于在oozie里放置Mysql驱动包的总结

  根据网上的参考以及我个人经验安装的使用

  (1)放一份到/opt/cloudera/parcels/CDH-5.16.1-1.cdh5.16.1.p0.3/lib/oozie/libext下 (是 mysql-connector-java-5.1.21.jar)(这里放到bigdatamaster节点)

  (2)放一份到$OOZIE_HOME/lib下 (是 mysql-connector-java-5.1.21.jar)(这里放到bigdatamaster节点)

  (3)放一份到/usr/share/java/下(一定要重命名,mv  mysql-connector-java-5.1.21-bin.jar   mysql-connector-java.jar)(这里放到bigdatamaster节点)

  (4)放一份到        /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre/lib/ext (这里放到bigdatamaster节点、bigdataslave1节点和bigdataslave2节点)

   (5)放一份到$OOZIE_HOME/oozie-server/lib下 (是 mysql-connector-java-5.1.21.jar)(这里放到bigdatamaster节点)
        
        
        oozie用不用都无所谓后面我们可以使用azkaban
        
        
        


12  hue
    用户名和密码,,,设置一下           admin 、 admin
    
    
    
    
    
    
    
13   spark是否会有问题,开始搞起来。。。

    配置比较简单,搞定之后可能需要重启一下。
    
    
    
    
14 集群组件测试用例运行


    hive、hue直接用即可
    
    hadoop的话:
    sudo -u hdfs hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 10 100 
    
    
    spark的话:
    
    集群上面直接输入spark-shell
    


15. centos7 swap 扩容
        
                    需要停止机器
                    
                
                但是报错:
                OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 716177408, 0) failed; error='Cannot allocate memory' (errno=12)


                查看内容使用情况:
                命令行输入:top

                    1.添加swap分区 
                    dd if=/dev/zero of=/var/swapfile bs=1024 count=8096k

                    2.执行完毕,对交换文件格式化并转换为swap分区: 
                    mkswap /var/swapfile

                    3.挂载并激活分区: 
                    swapon /var/swapfile

                    4 赋权限 
                    chmod -R 0600 /var/swapfile

                    5.设置开机自动挂载该分区: 
                    vi /etc/fstab 
                    在fstab文件末尾追加如下内容后:wq!保存即可: 
                    /var/swapfile swap swap defaults 0 0


                    重启一下机器吧。

16. 一些常见的配置信息


    注意:一些常见的cdh解决问题,可以参考这篇文章。
    https://blog.csdn.net/zzq900503/article/details/53393721


        (1)

                问题:
                hdfs
                副本不足的块监控阈值

                原因:
                原因是设置的副本备份数与DataNode的个数不匹配。

                我们在之前理论篇中已经说明了dfs. replication属性默认是3,也就是说副本数---块的备份数默认为3份。

                hadoop基础----hadoop理论(三)-----hadoop分布式文件系统HDFS详解

                但是我们这里集群只有两个DataNode。

                所以导致了达不到目标---副本备份不足。

                解决办法:
                解决方法

                这种情况下的修复有2个步骤,1是设置目标备份数为2,2是通过命令更改当前备份数。

                副本不足和副本过多都可以用这2个步骤解决,主要是跟DataNode的个数对应。

                设置目标备份数为2

                点击集群-HDFS-配置

                搜索dfs. replication,设置为2后保存更改。

                dfs.replication这个参数其实只在文件被写入dfs时起作用,虽然更改了配置文件,但是不会改变之前写入的文件的备份数。

                所以我们还需要步骤2

                在cm0中通过命令更改备份数:

                su - hdfs

                hadoop fs -setrep -R 2 /

                这里的-R 2的数字2就对应我们的DataNode个数。

                好了,HDFS也绿了。


        (2)
            问题,启动spark-shell
            报错:Required executor memory (1024+384 MB) is above the max threshold (1024 MB) of this cluster!
            
            
            程序运行需要请求(1024+384 MB)     但是我们最大阈值为1024,需要调大内存才可以
                
            
            解决方法:
                修改yarn.scheduler.maximum-allocation-mb 和 yarn.nodemanager.resource.memory-mb的默认值为2G

                然后重启集群


            (3)
            使用spark-shell报错:
            
            Error initializing SparkContext. org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x

            root没有用spark的权限呢,要复权一下的。。。
            
            
            
            
            
            (4)
            hive报错
            Hive Metastore canary创建数据库失败


            cm修改hive配置
            Hive Metastore 数据库密码
                javax.jdo.option.ConnectionPassword

            将该配置改成mysql的密码就行了。然后重启就行


            
            在这两个地方放入bin.jar
            /opt/cloudera/parcels/CDH-5.16.1-1.cdh5.16.1.p0.3/lib/hive/lib
            
            
            /opt/cloudera/parcels/CDH-5.16.1-1.cdh5.16.1.p0.3/lib/hadoop

            /usr/share/java/mysql-connector-java.jar(注意改名字)

            问题定位:读取hive数据时报找不到mysql驱动
            问题解决:


            最终找到解决办法:
                    1.
                    原来是昨天通过CM页面修改hive的配置文件时,hive的
                    Hive Metastore 数据库密码
                    javax.jdo.option.ConnectionPassword
                    被修改成CM管理员账户的密码了,改成mysql数据的密码,问题解决ok
                    
                    重启一下hive即可了
                    
                    
                    2.看日志说hdfs这个权限不够
                    
                    /user/hue/.cloudera_manager_hive_metastore_canary
                    
                    hdfs dfs -chmod 777 /user/hue/.cloudera_manager_hive_metastore_canary
            
            
            
            

            (5)spark运行程序
            
            运行example  
            cd /opt/cloudera/parcels/CDH/lib/spark/bin
            ./run-example SparkPi 10

            可以运行的,但是引申出来如下巨大的坑问题。
            

            (6)重启 hadoop yarn启动不了。
            报错日志:
            对角色 JobHistory Server (node1) 执行命令 启动此 JobHistory Server
            Failed to start role.
            
            
            
            那么来学习一下如何重启吧。
            https://blog.csdn.net/u012071918/article/details/80599928
            
            
            然后我们再来继续解决这个问题。
            
            
            查看详细日志报错:
            Service org.apache.hadoop.mapreduce.v2.hs.JobHistory failed in state INITED; cause: org.apache.hadoop.yarn.exceptions.YarnRuntimeException: Failed to intialize existing directories
            

            可以看到报错日志有一部分是说:
            Caused by: org.apache.hadoop.security.AccessControlException: Permission denied: user=mapred, access=READ_EXECUTE, inode="/user/history/done":root:hdfs:drwxrwx---
            
            我们要去改一下目录权限才可以


            看了日志,这个hdfs权限我是一路改到了底啊。。。
            
            /user/history/done/2019/05/09/000000/job_1557458491086_0001_conf.xml


            
            (7)zookeeper或者hdfs节点数不够
            
            报警告原因:
            Service zookeeper has 1 Server. Cloudera suggests at least 3 Server for ZooKeeper.
            

            选择添加实例,然后多选择几个节点,重启即可。
            
            
            
            

            

17.spark2自定义安装
            
            
            参考这篇文章
            https://blog.csdn.net/Gavin_chun/article/details/78554277

        一、下载
            
            下载:
            https://www.cloudera.com/documentation/spark2/latest/topics/spark2_packaging.html#packaging
            
            
            
            http://archive.cloudera.com/spark2/parcels/2.2.0.cloudera1/

            
            下载对应的包:
            
            
            
            SPARK2_ON_YARN-2.2.0.cloudera1.jar

            SPARK2-2.2.0.cloudera1-1.cdh5.12.0.p0.142354-el6.parcel
            SPARK2-2.2.0.cloudera1-1.cdh5.12.0.p0.142354-el6.parcel.sha
            manifest.json

        二、准备

            1、将SPARK2_ON_YARN-2.2.0.cloudera1.jar上传至/opt/cloudera/csd目录

            注:要保证集群的本地描述符存储库路径是/opt/cloudera/csd 
            查看方式:CM主界面管理–>设置–>类别(本地描述符存储库路径)

            2、将

            SPARK2-2.2.0.cloudera1-1.cdh5.12.0.p0.142354-el6.parcel
            SPARK2-2.2.0.cloudera1-1.cdh5.12.0.p0.142354-el6.parcel.sha
            manifest.json
            
            上传之后注意改下名字
            
            上传至/var/www/html/spark2目录下,且保证http能够访问。

            


        三、重启cloudera-scm-server 服务

                service cloudera-scm-server restart
            
                
                还要等一会儿才能进入这个页面哦
            
            
                成功后进入CM界面,在添加服务里面会看到spark2的按钮。

        四、可能需要激活
                报错 客户端配置生成需要激活以下其他 Parcel:[spark2]。
                
                
                但是当我们激活时,发现。
                
                错误
                SPARK2 (2.2.0.cloudera1-1.cdh5.12.0.p0.142354) 所需的 CDH (低于 5.14) Parcel 不可用。

                
                
                看来需要下载更加高的版本了
        
        五、换成2.4成功!需要添加服务
        
        
        
                SPARK2    2.4.0.cloudera1-1.cdh5.13.3.p0.1007356    
                已分配, 已激活

                您可以在此处自定义新服务的角色分配,但请注意,如果分配不正确(例如,分配到某个主机上的角色太多),性能受到影响。


                1、点击集群按钮旁的添加服务 
                2、选择spark2 –>继续 
                3、选择依赖 
                4、角色分配(Gateway所有主机都要安装) 
                5、启动


                将 Spark 2 服务添加到 Cluster 1
                恭喜您!
                您的新服务已安装在群集中并已配置。

                注意:您可能仍必须启动新服务。建议您在执行此操作之前,先重启所有配置过时的依赖关系服务。可以通过单击下面的完成在主页面上执行这些操作。


                然后我们su - hdfs
                pyspark2就可以进入python的命令了
                

        六、开发与demo
        
            用yarn来跑用例
            
            spark2-submit --class WordCount --master yarn --deploy-mode cluster --driver-memory 500m --executor-memory 500m --executor-cores 1 --queue default hzmt-demo.jar

            
            准备执行:
            spark2-submit --class voucher.VouchDev --master yarn --deploy-mode cluster --driver-memory 500m --executor-memory 500m --executor-cores 1 --queue default  /root/spark/voucher.jar

            我们来看一下demo


        重点:

            (1)

            但是提交我们以前写的项目报错了
            Exception in thread "main" org.apache.spark.SparkException: Application application_1557731445525_0005 finished with failed status
            at org.apache.spark.deploy.yarn.Client.run(Client.scala:1171)
            at org.apache.spark.deploy.yarn.YarnClusterApplication.start(Client.scala:1608)

            查一下什么原因
            
            
            spark2-submit --class voucher.VouchDev --master yarn --deploy-mode cluster --driver-memory 1g --executor-memory 1g --queue default  /var/lib/hadoop-hdfs/spark/voucher.jar
            
            
            
            
            
            
            (2)
            我们参考控制台报错找到我们刚才用的节点node2的问题,来看下:
            
             Final app status: FAILED, exitCode: 13, (reason: User class threw exception: java.lang.Illega
            
            往后看
            
             FAILED, exitCode: 13, (reason: User class threw exception: java.lang.IllegalArgumentException: System memory 466092032 must be at least 471859200. Please increase heap size using the --driver-memory 
            
            
            
            让我们增加内存。
            
            
            
            (3)
            增加完了内存可以了,但是抱一个新的错误了。我们来解决一下。
            Exception in thread "main" org.apache.spark.SparkException: Application application_1557731445525_0013 finished with failed status
            at org.apache.spark.deploy.yarn.Client.run(Client.scala:1171)

            
            
            http://node1:8088/proxy/application_1557731445525_0013/
            
            
            让我们打开这个看一下,报错。
            
            
            The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
            com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
            
            
            应该是mysql的bin的jar没有打进去,我们idea的时候,用build点击+  来增加jar的方式,将maven包打进去就可以了
            
            
            
            
            (4)mail邮件服务问题
            
            报错:
            ERROR yarn.ApplicationMaster: User class threw exception: java.lang.NoClassDefFoundError: javax/mail/Address
            java.lang.NoClassDefFoundError: javax/mail/Address
            
            
            打包之后也还是这样。
            
            
            这个暂时还是解决不了的。。。应该是和我的邮箱有关系吧。。。
            
            
            
            
            (5)spark
            
            写出来之后,汉字全部变成了问号?
            
            解决办法:
            jdbc:mysql://172.16.1.117:3306/database?useUnicode=true&characterEncoding=utf8
            
            
            
            (6)设置参数尽量使用1g,用少了,或者用多了都会报错的。
            
            
            
            
            

猜你喜欢

转载自blog.csdn.net/qq_33792843/article/details/90206814