elixiat 发表于 2017-12-17 17:55:03

利用cloudera manager搭建Hadoop集群

  前期准备:
  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权限
  命令是:#chmodu+w   /etc/sudoers
  #vi   /etc/sudoers
  在第一行加上:用户名ALL=(root)NOPASSWD:ALL
  因为我是以xunzhang这个用户登录的,所以我加上xunzhang ALL=(root)NOPASSWD:ALL
  #chmodu-w/etc/sudoers
  3.关闭防火墙
  命令是:$sudoservice iptables stop
  $sudochkconfigiptablesoff
  4.禁用selinux
  命令是:$sudovi/etc/sysconfig/selinux
  修改内容:SELINUX= disabled
  5.卸载JdK
  命令是:$sudorpm-qa | grepjava
  $sudorpm-e--nodepsxxx   yyy   zzz
  6.设置文件打开数量和用户最大进程数
  命令是:$sudovi/etc/security/limits.conf
  加上内容:
  *soft   nofiles   65535
  *hardnofiles   65535
  *soft    nproc    32000
  *hard   nproc    32000
  7.设置集群时间同步(ntp)
  比如说我现在设置第二台和第三台虚拟机与第一台虚拟机进行时间同步,
  1>首先检查第一台虚拟机有没有安装ntp软件,命令是:#rpm-qa | grep ntp,默认系统已经自带了
  2>编辑配置文件ntp.conf
  命令是:#vi/etc/ntp.conf
  去掉一行注释,将#restrict192.168.1.0mask 255.255.255.0nomodifynotrap,去掉注释,并将其改成192.168.174.0,因为我的ip是在这个网段里面
  加上三行注释,将service0.centos.pool.ntp.ort和service1.centos.pool.ntp.org还有service2.centos.pool.ntp.org这三行注释掉
  去掉两行注释,将末尾的server127.127.1.0   #local   clock和fudge127.127.1.0   stratum   10这两行的注释去掉
  3>编辑配置文件ntpd
  命令是:#vi/etc/sysconfig/ntpd

  内容是:# Droprootto>  SYNC_HWCLOCK =yes
  OPTIONS="-untp:ntp-p/var/run/ntpd.pid   -g"
  4>启动服务
  命令是:#servicentpdstart
  #chkconfig   ntpdon
  5>在另外两台虚拟机上,写脚本,进行时间的同步
  在第二台虚拟机上,切换到root用户,设置同步
  命令是:crontab-e
  加上如下内容:
  0-59/10* * * * /usr/sbin/ntpdatehadoopNumber01.medal.com
  注意:在这里每个*号之间有一个空格,后面这个域名是我第一台主机的主机名
  在第三台虚拟机上,也做如第二台虚拟机相同的操作
  二、离线搭建
  方式一:利用rpm包进行搭建
  1、启动本地Apache服务器(系统自带Apache服务器)
  命令是:sudo service httpd start
  sudo chkconfig httpd on
  2.搭建本地源
  1>软件下载
  cm-5.3.6bin文件 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>设置域名映射
  命令:sudovi/etc/hosts
  加上:192.168.174.131      archive.cloudera.com
  4>修改本地源
  命令:cd /etc/yum.repos.d
  sudorm-rf   ./*
  touchcloudera-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/目录下
  执行命令:sudotouch   RPM-GPG-KEY-cloudera
  并把http://archive.cloudera.com/cm5/redhat/6/x86_64/cm/RPM-GPG-KEY-cloudera里面的内容,写入这个文件中 
  5>安装依赖包repo-libs
  进入postgresq-libs目录下
  执行命令:chmodu+x ./*
  sudorpm-ivh./*
  进入repo-libs目录下
  执行命令:chmod   u+x./*
  sudorpm-ivh./*.rpm  
  安装完成后,切换到/var/www/html/cm5/redhat/6/x86_64/cm/5下
  执行命令:sudo   createrepo.
  3.安装cm-5.3.6
  执行:cm-5.3.6bin文件
  切换到cm-5.3.6bin文件所在的目录
  执行命令:
  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./*
  sudotouchcloudrea-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-trsa,然后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
  #HostnameoftheCMserver.
  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-agentstart
  以上脚本是启动命令,相关停止或重启命令仅需将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,然后usemysql,设置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]
查看完整版本: 利用cloudera manager搭建Hadoop集群