设为首页 收藏本站
查看: 1334|回复: 0

[经验分享] 利用cloudera manager搭建Hadoop集群

[复制链接]

尚未签到

发表于 2017-12-17 17:55:03 | 显示全部楼层 |阅读模式
  前期准备:
  1.我这里用了三台虚拟机,.默认已经配置好静态IP和IP域名映射,它们相互之间可以ping通
  第一台:192.168.174.131      hadoopNumber01.medal.com
  第二台:192.168.174.132      hadoopNumber02.meda.com
  第三台:192.168.174.133      hadoopNumber03.medal.com
  2.虚拟机一定不可以上网,因为我们后面用的是离线方式安装
  一、搭建前的系统设置
  1.将三台虚拟机切换到root用户,禁用IPv6
  命令是:#echo "alias net-pf-10 off"  >> /etc/modprobe.d/dist.conf
  #echo "alias ipv6 off"  >> /etc/modprobe.d/dist.conf
  2.配置普通用户的sudo权限
  命令是:#chmod  u+w   /etc/sudoers
  #vi   /etc/sudoers
  在第一行加上:用户名  ALL=(root)NOPASSWD:ALL
  因为我是以xunzhang这个用户登录的,所以我加上xunzhang ALL=(root)NOPASSWD:ALL
  #chmod  u-w  /etc/sudoers
  3.关闭防火墙
  命令是:$sudo  service iptables stop
  $sudo  chkconfig  iptables  off
  4.禁用selinux
  命令是:$sudo  vi  /etc/sysconfig/selinux
  修改内容:SELINUX= disabled
  5.卸载JdK
  命令是:$sudo  rpm  -qa | grep  java
  $sudo  rpm  -e  --nodeps  xxx   yyy   zzz
  6.设置文件打开数量和用户最大进程数
  命令是:$sudo  vi  /etc/security/limits.conf
  加上内容:
  *  soft   nofiles   65535
  *  hard  nofiles   65535
  *  soft    nproc    32000
  *  hard   nproc    32000
  7.设置集群时间同步(ntp)
  比如说我现在设置第二台和第三台虚拟机与第一台虚拟机进行时间同步,
  1>首先检查第一台虚拟机有没有安装ntp软件,命令是:#rpm  -qa | grep ntp,默认系统已经自带了
  2>编辑配置文件ntp.conf
  命令是:#vi  /etc/ntp.conf
  去掉一行注释,将#restrict  192.168.1.0  mask 255.255.255.0  nomodify  notrap,去掉注释,并将其改成192.168.174.0,因为我的ip是在这个网段里面
  加上三行注释,将service  0.centos.pool.ntp.ort和service  1.centos.pool.ntp.org还有service  2.centos.pool.ntp.org这三行注释掉
  去掉两行注释,将末尾的server  127.127.1.0   #local   clock和fudge  127.127.1.0   stratum   10这两行的注释去掉
  3>编辑配置文件ntpd
  命令是:#vi  /etc/sysconfig/ntpd

  内容是:# Drop  root  to>  SYNC_HWCLOCK =yes
  OPTIONS="-u  ntp:ntp  -p  /var/run/ntpd.pid   -g"
  4>启动服务
  命令是:#service  ntpd  start
  #chkconfig   ntpd  on
  5>在另外两台虚拟机上,写脚本,进行时间的同步
  在第二台虚拟机上,切换到root用户,设置同步
  命令是:crontab  -e
  加上如下内容:
  0-59/10  * * * * /usr/sbin/ntpdate  hadoopNumber01.medal.com
  注意:在这里每个*号之间有一个空格,后面这个域名是我第一台主机的主机名
  在第三台虚拟机上,也做如第二台虚拟机相同的操作
  二、离线搭建
  方式一:利用rpm包进行搭建
  1、启动本地Apache服务器(系统自带Apache服务器)
  命令是:sudo service httpd start
  sudo chkconfig httpd on
  2.搭建本地源
  1>软件下载
  cm-5.3.6  bin文件 http://archive.cloudera.com/cm5/installer/5.3.6/cloudera-manager-installer.bin
  cm-5.3.6  依赖rpm包 http://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5.3.6/RPMS/x86_64/
  依赖其它包  postgresq-libs和repo-libs
  2>安装cm-5.3.6
  命令:cd /var/www/html
  sudo mkdir -p cm5/redhat/6/x86_64/cm/5/RPMS/x86_64/,然后,将上面下载的依赖rpm包,全部放在这个目录下
  3>设置域名映射
  命令:sudo  vi  /etc/hosts
  加上:192.168.174.131      archive.cloudera.com
  4>修改本地源
  命令:cd /etc/yum.repos.d
  sudo  rm  -rf   ./*
  touch  cloudera-manager.repo
  然后将http://archive.cloudera.com/cm5/redhat/6/x86_64/cm/cloudera-manager.repo里面的内容写入cloudera-manager.reop文件中,并将最后倒数第三行的https修改成http,将倒数第二行改成enable=1,倒数第一行改成gpgcheck=0
  完成后,再创建一个名RPM-GPG-KEY-cloudera文件
  切换到cm5/redhat/6/x86_64/cm/目录下
  执行命令:sudo  touch   RPM-GPG-KEY-cloudera
  并把http://archive.cloudera.com/cm5/redhat/6/x86_64/cm/RPM-GPG-KEY-cloudera里面的内容,写入这个文件中 
  5>安装依赖包repo-libs
  进入postgresq-libs目录下
  执行命令:chmod  u+x ./*
  sudo  rpm  -ivh  ./*
  进入repo-libs目录下
  执行命令:chmod   u+x  ./*
  sudo  rpm  -ivh  ./*.rpm  
  安装完成后,切换到/var/www/html/cm5/redhat/6/x86_64/cm/5下
  执行命令:sudo   createrepo  .
  3.安装cm-5.3.6
  执行:cm-5.3.6  bin文件
  切换到cm-5.3.6  bin文件所在的目录
  执行命令:
  sudo  ./cloudera-manager-installer.bin
  然后一直下一步,下一步,就安装好了.安装完成后,运行命令:sudo netstat -tnlp,看看7180端口,有没有打开,如果开启了,就可以访问web页面,没有开启,就查看你的cloudera  服务有没有打开,执行命令:sudo service cloudera-scm-server status,如果服务正在运行,等待一会儿就好了
  至此,cloudera manager集群搭建完成,接着搭建cdh集群了  
  4.搭建cdh集群
  1> 将cdh的两个文件,放到/opt/cloudera/parcel-repo/目录下
  命令:cd   /opt/cloudera/parcel-repo/
  sudo cp  /opt/softwares/cdh-5.3.6 /* ./
  2>  修改cloudera-manager.repo文件
  命令:cd   /etc/yum.repos.d
  然后将archive.cloudera.com改成你的主机名
  3>  将第2步的cloudera-manager.repo文件,在另外两台虚拟机上也创建出来
  第二台虚拟机:
  命令:cd   /etc/yum.repo.d
  sudo rm  -rf  ./*
  sudo  touch  cloudrea-manager.repo
  最后将第一台虚拟机里面cloudera-manager.repo中的内容,复制到这个里面
  第三台虚拟机,也做第二台虚拟机相同的操作
  4>用浏览器访问你虚拟机的主机名:hadoopNumber01.medal.com:7180,用户名是:admin,密码是:admin,这个是初始的用户名和密码,大家设置好后,可以修改的,选择免费版,继续,继续,然后把这三台虚拟机的主机名或ip,填进去,继续,点击“自定义存储库”,在下面的方框中,输入“https://hadoopNumber01.medal.com/cm5/redhat/6/x86_64/cm/5/”,就是开始我们的cloudera-manager.repo里面的倒数第三行的内容,继续,安装Oracle,继续, 其他用户,xunzhang,输入你的用户密码,同时安装数量为3,继续,然后集群安装,下一步,下一步,最后的你cdh就装好了
  5、中间的黄色警告:
  1>修改你的hosts文件
  2>三台虚拟机都要做
  $ sudo sysctl -w vm.swappiness=0
  # echo "vm.swappiness=0" >> /etc/sysctl.conf
  3>三台虚拟机都要做
  # echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
  将“echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag” 追加到/etc/rc.local中
  方式二:利用tar包进行搭建
  0.克隆虚拟机,重新生成mac地址,设置静态ip,命令:
  #vi  /etc/udev/rules.d/70-persistent-net.rules
  #vi  /etc/sysconfig/network-scripts/if-cfg-eth0   
  DEVICE=eth0
  TYPE=Ethernet
  UUID=ffc58755-5c20-4e35-8be6-f3a61434a347
  ONBOOT=yes
  NM_CONTROLLED=yes
  BOOTPROTO=none
  HWADDR=00:0C:29:A6:31:AF
  IPADDR=192.168.174.132
  PREFIX=24
  GATEWAY=192.168.174.1
  DEFROUTE=yes
  IPV4_FAILURE_FATAL=yes
  IPV6INIT=no
  NAME="System eth0"
  1.配置ssh面密钥登陆
  1>切换到家目录
  2>执行ssh-keygen  -t  rsa  ,然后4个回车
  3>进入.ssh目录,执行ssh-copy-id   目标主机 
  2.在所有节点上安装jdk(最好是1.7以上),安装jdk,在这里,我就不赘述了
  3.安装mysql(master节点)
  4.安装cloudera manager server 和 agent
  1>解压tar包,将/opt/software/下的cloudera-manager-el6-cm5.12.0_×86_64.tar.gz解压到/opt/目录下
  2>为cloudera manager 5建立数据库
  将准备好的mysql-connector-java-5.1.27-bin.jar文件放到/opt/cm-5.12.0/share/cmf/lib/中
  在master节点初始化cm5的数据库
  命令:
  /opt/cm-5.12.0/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -proot --scm-host localhost scm scm scm
  说明:            
  /opt/cm-5.12.0/share/cmf/schema/scm_prepare_database.sh   这个是固定的
  mysql   是指mysql数据库,如果你是oracle,那么这里就是oracle
  cm    是创建的数据库名
  3>配置Agent
  修改/opt/cm-5.12.0/etc/cloudera-scm-agent/config.ini中的server_host为主节点的主机名master
  命令:vi  /opt/cm-5.12.0/etc/cloudera-scm-agent/config.ini
  #Hostname  of  the  CM  server.
  server_host=master
  注意:这里的master是你的主机名,我的主机名是hadoopNumber01.medal.com,所以是server_host=hadoopNumber01.medal.com
  同步Agent到其它节点
  命令:
  scp  -r /opt/cm-5.12.0/   用户名@主机名:/opt/
  4>在所有节点上创建cloudera-scm用户
  命令:useradd --system --home=/opt/cm-5.12.0/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
  5>准备Parcels,用以安装CDH5 
  将CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中(parcel-repo需要手动创建)。
  相关的文件如下:
  CDH-5.12.0-1.cdh5.12.0.p0.5-el6.parcel.sha1
  CDH-5.12.0-1.cdh5.12.0.p0.5-el6.parcel
  manifest.json
  后将CDH-5.12.0-1.cdh5.12.0.p0.5-el6.parcel.sha1,重命名为CDH-5.12.0-1.cdh5.12.0.p0.5-el6.parcel.sha1,这点必须注意,否则,系统会重新下载CDH-5.12.0-1.cdh5.12.0.p0.5-el6.parcel.sha文件。
  6>执行启动脚本
  在master节点上启动服务端
  命令:
  /opt/cm-5.12.0/etc/init.d/cloudera-scm-server start
  在所有节点启动Agent
  命令:
  /opt/cm-5.12.0/etc/init.d/cloudera-scm-agent  start
  以上脚本是启动命令,相关停止或重启命令仅需将start变成stop或restart即可。
  7>配置cdh集群
  Cloudera Manager Server和Agent都启动以后,就可以进行CDH5的安装配置了。
  在浏览器打开http://master:7180进入CDH管理界面,由于CM Server的启动需要花点时间,这里可能要等待一会才能访问,默认的用户名和密码均为admin。
  选择安装的集群,这里注意只有已启动cloudera-scm-agent的主机才能被CM管理。
  选择我们安装需要的Parcel包,这里可以看到我们已准备好的CDH-5.12.0-1.cdh5.12.0.p0.5-el6.parcel包,若没有,就检查相关文件是否正确放入/parcel-repos中,且CDH-5.12.0-1.cdh5.12.0.p0.5-el6.parcel.sha1是否正确重命名。
  继续,如果上一步检查配置没问题,这里的第一个进度条应该瞬间完成,CM不需要再向用品下载Parcel,然后等待CM将Parcel分发到各slave节点上并激活。  
  CM会检测集群很多环境项,此处如果出现这样的警告,是一个默认环境变量的问题,Cloudera建议将/proc/sys/vm/swappiness设置为0,当前设置为 60。在所有节点执行这个命令: # echo 0 > /proc/sys/vm/swappiness,这个命令在方式一中已经说明了
  所安装的角色有些需要用到数据库,则在mysql中新建相应数据库即可。进行下一步之前必须测试数据库的连通性,以hive举例:
  mysql -h localhost -u root -p
  create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
            设置服务所需的目录结构,若无特殊需求这里也可以保持默认目录结构。
  在这之间可能会出现以下错误:
  Logon denied for user/password. Able to find the database server and database, but logon request was rejected
  解决办法:

  登陆进mysql,然后use  mysql,设置root授权访问所有的数据库: grant all privileges on *.* to 'root'@'%'>  刷新:flush privileges;
  接下来就等待初始化和启动服务,这里可能会遇到Hive报错的问题,因为我们选择了Mysql作为hive的元数据存储,查看日志知道是Hive初始化Mysql的时候找不到jar文件,将mysql-connector-java-5.1.33-bin.jar拷贝到hive存放jar文件的目录重试即可。
  cp /opt/cm-5.12.0/share/cmf/lib/mysql-connector-java-5.1.27-bin.jar /opt/cloudera/parcels/CDH-5.12.0-1.cdh5.12.0.p0.12/lib/hive/lib/ 
  安装spark完成后,运行bin/spark-shell,也许会出现以下错误:
  Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.fs.FSDataInputStream
  解决办法:

  进入/opt/cloudera/parcels/CDH/etc/spark/conf.dist目录下,编辑spark-env.sh文件,加入export SPARK_DIST_CLASSPATH=$(hadoop>  如果服务都启动成功,这个集群已安装上所需要的Hadoop服务,整个部署过程结束。 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-425082-1-1.html 上篇帖子: Hadoop RPC Server端源码分析 下篇帖子: Hadoop伪分布模式配置部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表