CDH-Spark2-yarn-cluster开发

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

详细的文档在系列cdh搭建第一篇有详细的介绍,但是相关场景,觉得还是需在本篇做一下补充。。。

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,用少了,或者用多了都会报错的。

遇到了一个问题,好像这里的spark集群并不是真正的安装,但是使用yarn-cluster又可以跑程序,所以也就没有管

再提一点,在spark的main方法中,这么写是亲测可用的。

val conf = new SparkConf().setAppName("Voucher-Task").setMaster("yarn-cluster")

cdh并没有真正启动spark,是阉割版的spark。需要真正启动


            首先是,我们发现spark的7077没有


            cdh的spark并非真正启动,需要自己安装。
            请参考文档
            https://www.2cto.com/net/201805/750729.html
            
            
            
            
            
            
            1.jps
            发现压根没有spark相关组件的进程有启动
            
            2.先说明几个目录需要注意的(cdh的spark目录非常的乱)
                    (1)spark的部分bin
                    /opt/cloudera/parcels/CDH/lib/spark/bin
                    (2)spark的安装目录
                        /opt/cloudera/parcels/CDH-5.16.1-1.cdh5.16.1.p0.3/lib/spark
            

猜你喜欢

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