Spark推荐系统,干货,心得
点击上方蓝字关注~
在公司用CDH集群还是挺多的,之前有在公司部署一套CDH+SPARK2大数据开发集群,但CDH默认只支持spark1,安装spark2需要自己进行升级,现将部署过程进行整理,欢迎各位大佬指教~
CDH环境如下
Hadoop 2.6.0-cdh5.12.0 spark2-2.2.0
rehel 6.5x64
cdhmaster 192.168.114.210 部署CMserver 3G内存
cdhslave1 192.168.114.211 部署hadoop、spark主从节点 3G内存
cdhslave2 192.168.114.212 部署hadoop、spark从节点 2G内存
工具包准备 如下(自行下载)
mysql安装包
安装依赖包每个节点操作,非centos系统或不能上网需配置yum源
yum install chkconfig python2.6 bind-utils psmisc libxslt zlibsqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb -y
基础环境搭建(每台都需要进行操作)
关闭iptables和selinux
[root@localhost ~]# /etc/init.d/iptables stop
[root@localhost ~]# chkconfig iptables off
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
[root@localhost ~]# sed -i's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
时间同步
[root@localhost ~]# yum install ntp -y
[root@localhost ~]# ntpdate ntp1.aliyun.com
[root@localhost src]# yum install lrzsz dos2unix wget tre lsof-y
最好能够加到cron定时任务中;
免密码登陆
[root@localhost ~]# ssh-keygen -t rsa
[root@localhost ~]# ssh-copy-id -i /root/.ssh/id_rsa.pubroot@192.168.114.211
[root@localhost ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.114.212
[root@localhost ~]# vi /etc/ssh/sshd_config
UseDNS no
GSSAPIAuthentication no
[root@localhost ~]# /etc/init.d/sshd restart
hosts文件
[root@cdhmaster parcel-repo]# cat /etc/hosts
127.0.0.1 localhostlocalhost.localdomain localhost4 localhost4.localdomain4
::1 localhostlocalhost.localdomain localhost6 localhost6.localdomain6
192.168.114.210 cdhmaster
192.168.114.211 cdhslave1
192.168.114.212 cdhslave2
jdk安装,环境变量等自行配置(具体过程省略)
[root@localhost src]# java -version
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
mysql安装---server端安装mysql
脚本一键安装了,或者参考文档:
http://www.ywlinux.com/archives/303
以下正式开始部署CDH
解压二进制包---所有节点操作
[root@localhost ~]# mkdir /opt/cloudera-manager
[root@localhost ~]# cd /usr/local/src
[root@localhost src]# tar xf cloudera-manager-el6-cm5.4.3_x86_64.tar.gz-C /opt/cloudera-manager/
tar xfcloudera-manager-centos7-cm5.12.0_x86_64.tar.gz -C /opt/cloudera-manager/
tarxvzf cloudera-manager-el6-cm5.12.0_x86_64.tar.gz -C /opt/cloudera-manager/
创建用户---所有节点操作
useradd--system --home=/opt/cloudera-manager/cm-5.12/run/cloudera-scm-server/--no-create-home --shell=/bin/false --comment "clouder SCM user"cloudera-scm
useradd--system --home=/opt/cloudera-manager/cm-5.12.0/run/cloudera-scm-server/--no-create-home --shell=/bin/false --comment "clouder SCM user"cloudera-scm
修改CM agent---所有节点操作
vim/opt/cloudera-manager/cm-5.12.0/etc/cloudera-scm-agent/config.ini
调整成对应CMserver的host
配置CM数据库--在server端操作即可
[root@localhost src]# mv mysql-connector-java-5.1.26-bin.jar /usr/share/java/mysql-connector-java.jar这一步必须做,而且必须改名字为mysql-connector-java.jar,没有 /usr/share/java/目录自行创建
创建一个mysql的用户temp
mysql -uroot -p'mysql_123' -e "grant all on *.* to'temp'@'192.168.114.%' identified by 'temp' with grant option;"
cd /opt/cloudera-manager/cm-5.12.0/share/cmf/schema/
./scm_prepare_database.sh mysql -h 192.168.114.210 -utemp-p'temp' --scm-host 192.168.114.210 scm scm scm
./scm_prepare_database.shmysql -h 172.16.13.219 -P3307 -utemp-p'temp' --scm-host 172.16.13.219 scmscm scm
出现All done, your SCM database is configured correctly! 表示成功。
创建parcel目录---server端操作
[root@cdh-1 schema]# mkdir -p /opt/cloudera/parcel-repo
[root@cdh-1 schema]# id cloudera-scm
uid=498(cloudera-scm) gid=498(cloudera-scm) groups=498(cloudera-scm)
[root@cdh-1 schema]# chown -R cloudera-scm.cloudera-scm/opt/cloudera/parcel-repo
server拷贝自制的源
[root@cdh-1 schema]# cp /usr/local/src/CDH-*/opt/cloudera/parcel-repo/
[root@cdh-1 ~]# cp /usr/local/src/manifest.json/opt/cloudera/parcel-repo/
CDH-5.12.0-1.cdh5.12.0.p0.29-el6.parcel
CDH-5.12.0-1.cdh5.12.0.p0.29-el6.parcel.sha
manifest.json
创建parcel目录---agent端操作
[root@cdh-2 src]# mkdir -p /opt/cloudera/parcels
[root@cdh-2 src]# chown -R cloudera-scm.cloudera-scm/opt/cloudera/parcels
启动server(此步骤需要等待时间较长,可以通过日志进行观察)
[root@cdh-1 ~]#/opt/cloudera-manager/cm-5.12.0/etc/init.d/cloudera-scm-server start
启动较慢的时候观察日志tail -f/opt/cloudera-manager/cm-5.12.0/log/cloudera-scm-server/cloudera-scm-server.log
把所有的agent启动
[root@cdh-2 ~]# /opt/cloudera-manager/cm-5.12.0/etc/init.d/cloudera-scm-agent start
然后访问网页:初始用户名密码admin/admin
http://192.168.114.210:7180
选择cloudera express ,在5.4以前的版本,节点是有50个的限制,现在都是无限制了
会有些warning,尽量按照提示来修改。
[root@cdh-1 ~]# echo "0" > /proc/sys/vm/swappiness
[root@cdh-1 ~]# echo 'vm.swappiness = 0' >>/etc/sysctl.conf
[root@cdh-1 ~]# sysctl -p
自定义安装服务
我们先安装HDFS/yarn,其他的以后再安装
spark2整合CDH
cdh默认支持spark1
创建csd目录---server端
mkdir /opt/cloudera/csd
并将SPARK2_ON_YARN-2.2.0.cloudera1.jar传到该目录下
chgrp cloudera-scm SPARK2_ON_YARN-2.2.0.cloudera1.jar
chown cloudera-scm SPARK2_ON_YARN-2.2.0.cloudera1.jar
上传parcel包到机器的/opt/cloudera/parcel-repo目录下
如果有其他的安装包,不用删除,但是如果本目录下有其他的重名文件比如manifest.json文件,把它重命名备份掉。然后把那3个parcel包的文件放在这里
重启集群
把所有的agent重启--agent端操作
[root@cdh-2 ~]#/opt/cloudera-manager/cm-5.12.0/etc/init.d/cloudera-scm-agent restart
重启server---server端操作(此步骤需要等待时间较长,可以通过日志进行观察)
[root@cdh-1 ~]#/opt/cloudera-manager/cm-5.12.0/etc/init.d/cloudera-scm-server restart
到管理界面操作看是否多了个spark2的选项。如下图,你这里此时应该是分配按钮,点击,等待操作完成后,点击激活按钮
激活后,点击你的群集-》添加服务,添加spark2服务。注意,如果你这里看不到spark2服务,就请检查你的CSD包和parcel包是否对应,上面的步骤是否有漏掉。正常情况下,应该是能用了
注意:安装spark2自己也会把spark进行安装
安装完进行如下调整,否则spark on yarn模式不能启动
vi/opt/cloudera-manager/cm-5.12.0/lib64/cmf/service/client/deploy-cc.sh
exportCLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib
exportPATH=$PATH:$JAVA_HOME/bin
vi/opt/cloudera/parcels/CDH-5.12.0-1.cdh5.12.0.p0.29/etc/spark/conf.dist/spark-env.sh
exportSPARK_DIST_CLASSPATH=$(hadoop classpath)
配置gateway,在管理界面进行配置
测试spark2-shell是否可用
供参考:
推荐阅读:
hive初学
长按识别二维码关注我们