在Ubuntu 14.04 LTS下通过Cloudera CDH 5.4.8搭建Hadoop集群

来源:互联网 发布:免费轻小说软件 编辑:程序博客网 时间:2024/05/16 05:00

最近,根据公司的需求,搭建了一个7个节点的Hadoop集群。这里把搭建的过程和碰到的问题作一个详细的描述,以供将来其他同事学习和参考。
硬件环境:(Cisco UCS C220 M3, 1T硬盘, 64G内存) * 8
操作系统:Ubuntu 14.04 LTS

一. 前期准备工作

1. 集群规划

一共8台服务器,其中1台作为Cloudera Manager的服务端,用来监控集群的健康状况,以及维护集群;另外7台作为大数据集群。具体分配如下:

主机 IP 角色 tehdname1 10.167.192.224 Namenode tehdname2 10.167.192.225 Secondary Namenode tehdresmgr 10.167.192.226 YARN, Resource Manager tehdapp1 10.167.192.227 运行其他非核心相关部件 tehdapp2 10.167.192.228 运行其他非核心相关部件 tehdapp3 10.167.192.229 运行其他非核心相关部件 tehdapp4 10.167.192.230 运行其他非核心相关部件 tehdmonitor 10.167.192.231 运行Cloudera Manager

2. 安装Ubuntu操作系统

对于UCS,我们可以使用U盘来安装Ubuntu系统。
注意,根据实践发现,UCS只有在BIOS中把南桥选项下面的RAID模式设置成Intel,在安装Ubuntu的过程中,才能识别硬盘,因此一定要选用支持Intel RAID的UCS。
另外,如果UCS之前已经配置过了LSI的RAID,则必须在BIOS里面设置成LSI RAID模式,然后删除掉所有的RAID配置,最后在BIOS中再设置成Intel RAID。
CDH本身不建议使用RAID,所以不要配置任何RAID。
安装过程不做具体说明了,建议每一台的分区都设定成一样。

3. 系统配置

在安装CDH前,我们需要进行一些必要的系统配置。在以下所有配置中,如果没有特殊说明,就需要在集群的所有节点上进行配置。完成以下所有配置后,重启所有节点,保证所有的配置都已经生效。

  • 安装SSH
    在安装CDH的过程中,Cloudera Manager需要通过SSH跳转到所有的节点上执行任务,另外SSH也为将来的远程维护提供方便。
sudo apt-get updatesudo apt-get -y --force-yes install ssh
  • 安装ntp
sudo apt-get updatesudo apt-get -y --force-yes install ntp
  • 配置无密码sudo提升至root用户
    在安装CDH的过程中,Cloudera Manager需要在节点上通过sudo直接提升至root权限,而不需要在输入密码,因此需要另外创建一个用户,并且设定该用户不需要密码。
#创建新用户leonsudo useradd -b /home -d /home/leon -m -s /bin/bash leonsudo passwd leon#配置新创建的用户可以无需输入密码直接sudo获得root权限cdecho "leon ALL=(ALL:ALL) NOPASSWD: ALL" > nopasswdsudo chown root.root nopasswdsudo mv nopasswd /etc/sudoers.d/nopasswd#至此,用户leon可以使用sudo命令自己提升至root权限名并且不需要输入密码
  • 配置网络
    Ubuntu默认将网络配置成以DHCP的方式获取IP地址。我们的集群中每一台都已经有固定IP地址,这里通过配置/etc/network/interfaces来设定IP地址。比如:
auto loiface lo inet loopbackauto eth0iface eth0 inet staticaddress 10.167.192.231netmask 255.255.252.0gateway 10.167.192.1auto eth1iface eth1 inet staticaddress 192.168.1.10netmask 255.255.255.0#这个是通过SoftEtner虚拟出来的网卡,用于接入Internetauto vpn_internet   iface vpn_internet inet dhcp
  • 配置hosts文件
    严格按照下面的格式来配置/etc/hosts文件,否则将来会出现各种各样的问题:
127.0.0.1       localhost.bigdata.net   localhost10.167.192.224  tehdname1.bigdata.net   tehdname110.167.192.225  tehdname2.bigdata.net   tehdname210.167.192.226  tehdresmgr.bigdata.net  tehdresmgr10.167.192.227  tehdapp1.bigdata.net    tehdapp110.167.192.228  tehdapp2.bigdata.net    tehdapp210.167.192.229  tehdapp3.bigdata.net    tehdapp310.167.192.230  tehdapp4.bigdata.net    tehdapp410.167.192.231  tehdmonitor.bigdata.net tehdmonitor10.167.194.82   tehddev1.bigdata.net    tehddev1
  • 配置hostsname文件
    一般在安装操作系统的时候指定的主机名是不带域名的,这里要把/etc/hostname文件的内容改为带完整域名的主机名。比如如下主机名:
tehdname1.bigdata.net
  • 配置sysctl.conf文件
    在/etc/sysctl.conf文件的最后加入以下一行代码:
vm.swappiness=0     #注意等号前后都没有空格
  • 其他配置

二. 安装CDH

在安装CDH的过程中,需要访问Internet用于下载必要的软件或安装包。其中,在运行Cloudera Manager的节点上需要下载安装JDK, Couldera Manager Server, DB, CDH包等等,其他所有节点都需要下载JDK, Cloudera Manager Agent等。
为了节省在安装过程中占用的网络带宽资源,节省下载安装包所消耗的时间,并考虑到以后可能存在的推到重装的可能性,建议先挑选一台主机,将该主机作为集群中唯一的节点来进行安装,当所有需要的安装包都下载完成后,即可中断安装过程,然后把这些包都备份起来。备份方法可参考如下命令:

mkdir ~/backupmkdir ~/backup/packagescp /var/cache/apt/archives/*.deb ~/backup/packagesmkdir ~/backup/cdhcp /opt/cloudera/parcel-repo/* ~/backup/cdh

安装过程

为方便截图,且不影响现有的集群,以下安装过程在虚拟机上完成。

1.更新源
在所有节点上执行以下命令:

cd /etc/apt/sources.list.dsudo wget http://archive.cloudera.com/cm5/ubuntu/trusty/amd64/cm/cloudera.listsudo apt-get update

2.将安装包复制到所有节点上去
假定在前面的步骤中,安装包都备份在tehdmonitor主机上,在所有节点上(包括tehdmonitor)上执行以下命令:

sudo scp leon@tehdmonitor:/home/leon/backup/packages/*.deb /var/cache/apr/archives

3.在Cloudera Manager节点上安装JDK, cloudera server, DB
在Cloudera Manager节点上执行以下命令:

sudo apt-get -y --force-yes install ssh oracle-j2sdk1.7sudo apt-get -y --force-yes install cloudera-manager-daemons cloudera-manager-serversudo apt-get -y --force-yes install cloudera-manager-server-db-2

4.复制备份的CDH包到Cloudera Manager节点
在Cloudera Manager节点上执行以下命令:

sudo cp /home/leon/backup/cdh/* /opt/cloudera/parcel-repo

5.启动Cloudera Manager节点
在Cloudera Manager节点上执行以下命令:

sudo service cloudera-scm-server-db startsudo service cloudera-scm-server start

等Cloudera Manager启动完成后,等大约2分钟,我们就可以通过Web UI来配置我们的集群了。

6.打开Cloudera Manager的Console (Web UI),并按提示进行操作

  • 打开Web UI
    使用浏览器访问Cloudera Manager节点的7180端口,比如http://tehdmonitor:7180
    这里写图片描述

  • 登陆系统
    登陆的用户名和密码都是admin

  • 选择版本
    公司很抠门的,选择免费的Express版本就好了,然后点“继续”按钮
    这里写图片描述

看到下面的这个界面,点“继续”按钮
这里写图片描述

  • 指定集群的主机
    在这里,把你集群里面的节点都写上去,注意不要把Cloudera Manager节点放进去了,除非你确定需要把Cloudera Manager的节点也作为集群的一个节点。然后点“搜索”按钮
    这里写图片描述

等到搜索结果出来了,把节点全都选中,然后点“继续”按钮
这里写图片描述

  • 集群CDH包的选择
    这里保持默认的就好了,除非你确定还要选择其他的包。然后点“继续”按钮
    这里写图片描述

  • JDK选项
    先选中“安装Oracle JDK”,然后再选中“安装Java无限制强度加密”,然后点“继续”按钮
    这里写图片描述

  • 启用单用户模式
    这一页保持默认就好了,点“继续”按钮
    这里写图片描述

  • 提供SSH登陆凭据
    这里的“登陆到所有主机,作为”要选择“其他用户”,然后输入前面创建的无密码sudo变为root的用户,然后下面输入密码和确认密码,然后点“继续”按钮,然后耐心等待安装完成。
    这里写图片描述

安装完成后的界面如下,然后点击“继续”按钮
这里写图片描述

  • 安装选定的Parcel
    在这个界面耐心等待“继续”按钮变亮,注意,如果你现在做的是为了备份安装包而进行的单节点临时安装过程,那么到这里就可以停止了,然后进行安装包的备份操作。如果你是在安装一个实际会使用的集群,那么请点击“继续”按钮
    这里写图片描述

  • 检查主机正确性
    在这个界面耐心等待主机检查完成,要保证没有一个错误。如果有任何错误,参考前面的配置修改,然后点“重新运行”按钮,如果没有任何问题了,就点“完成”按钮
    这里写图片描述

  • 选择集群服务
    在集群服务选择页,选择“自定义服务”,然后选择想要安装的服务。这里说明几点:

    1. 不要选Isilon,否则后面的配置会麻烦点。有兴趣的可以尝试
    2. 不要选择MapReduce,后面选择的YARN已经包含这个了
    3. 千万不要选择Spark。在集群中只有一个节点时不会有问题,如果集群中有多个节点,那么Spark将会导致后面的安装失败,这个是可能是CDH的一个BUG。解决方法是,这时候不要选Spark,等集群安装好以后再单独添加Spark服务。
      服务选择好以后,点击“继续”按钮
      这里写图片描述
  • 分配集群角色
    根据自己的需求来分配就好了。尽量不要把所有的角色分配到一个节点上,避免该节点的负担太重。我这里是用虚拟机演示的,所以所有的服务都安装到唯一个这个节点了。
    另外,ZooKeeper的节点数应该为3或5,这个是Cloudera的建议值。
    角色分配完了,就点“继续”按钮
    这里写图片描述

  • 数据库设置
    这里可以使用自定义的数据库或嵌入式的数据库,一定要保证点击“测试连接”能通过,建议自己在对应服务的节点上安装mysql数据库,然后这里选择自定义数据库。测试连接通过后,点“继续”按钮
    这里写图片描述

  • 审核更改
    这一页保持默认就可以了,或者根据实际的情况来修改。然后点“继续”按钮
    这里写图片描述

  • 安装服务
    接下来就可以坐下来喝杯茶,慢慢等集群安装完成了。我的虚拟器的内存太小,没到装完就会卡死,只能截一个安装一部分的图了。
    这里写图片描述
    所有的服务都安装完成后,集群会自己启动。

本文写到这里就结束了,这里附上一张集群正常运行的截图。
这里写图片描述

0 0