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

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

一. 前期准备工作

1. 集群规划

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

主机IP角色
tehdname110.167.192.224Namenode
tehdname210.167.192.225Secondary Namenode
tehdresmgr10.167.192.226YARN, Resource Manager
tehdapp110.167.192.227运行其他非核心相关部件
tehdapp210.167.192.228运行其他非核心相关部件
tehdapp310.167.192.229运行其他非核心相关部件
tehdapp410.167.192.230运行其他非核心相关部件
tehdmonitor10.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 update
sudo apt-get -y --force-yes install ssh
  • 安装ntp
sudo apt-get update
sudo apt-get -y --force-yes install ntp
  • 配置无密码sudo提升至root用户
    在安装CDH的过程中,Cloudera Manager需要在节点上通过sudo直接提升至root权限,而不需要在输入密码,因此需要另外创建一个用户,并且设定该用户不需要密码。
#创建新用户leon
sudo useradd -b /home -d /home/leon -m -s /bin/bash leon
sudo passwd leon
#配置新创建的用户可以无需输入密码直接sudo获得root权限
cd
echo "leon ALL=(ALL:ALL) NOPASSWD: ALL" > nopasswd
sudo chown root.root nopasswd
sudo mv nopasswd /etc/sudoers.d/nopasswd
#至此,用户leon可以使用sudo命令自己提升至root权限名并且不需要输入密码
  • 配置网络
    Ubuntu默认将网络配置成以DHCP的方式获取IP地址。我们的集群中每一台都已经有固定IP地址,这里通过配置/etc/network/interfaces来设定IP地址。比如:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 10.167.192.231
netmask 255.255.252.0
gateway 10.167.192.1

auto eth1
iface eth1 inet static
address 192.168.1.10
netmask 255.255.255.0

#这个是通过SoftEtner虚拟出来的网卡,用于接入Internet
auto vpn_internet   
iface vpn_internet inet dhcp
  • 配置hosts文件
    严格按照下面的格式来配置/etc/hosts文件,否则将来会出现各种各样的问题:
127.0.0.1       localhost.bigdata.net   localhost
10.167.192.224  tehdname1.bigdata.net   tehdname1
10.167.192.225  tehdname2.bigdata.net   tehdname2
10.167.192.226  tehdresmgr.bigdata.net  tehdresmgr
10.167.192.227  tehdapp1.bigdata.net    tehdapp1
10.167.192.228  tehdapp2.bigdata.net    tehdapp2
10.167.192.229  tehdapp3.bigdata.net    tehdapp3
10.167.192.230  tehdapp4.bigdata.net    tehdapp4
10.167.192.231  tehdmonitor.bigdata.net tehdmonitor
10.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 ~/backup
mkdir ~/backup/packages
cp /var/cache/apt/archives/*.deb ~/backup/packages
mkdir ~/backup/cdh
cp /opt/cloudera/parcel-repo/* ~/backup/cdh

安装过程

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

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

cd /etc/apt/sources.list.d
sudo wget http://archive.cloudera.com/cm5/ubuntu/trusty/amd64/cm/cloudera.list
sudo 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.7
sudo apt-get -y --force-yes install cloudera-manager-daemons cloudera-manager-server
sudo 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 start
sudo 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数据库,然后这里选择自定义数据库。测试连接通过后,点“继续”按钮
    这里写图片描述

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

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

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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值