共计 5550 个字符,预计需要花费 14 分钟才能阅读完成。
最近,根据公司的需求,搭建了一个 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 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.linuxidc.net localhost
10.167.192.224 tehdname1.linuxidc.net tehdname1
10.167.192.225 tehdname2.linuxidc.net tehdname2
10.167.192.226 tehdresmgr.linuxidc.net tehdresmgr
10.167.192.227 tehdapp1.linuxidc.net tehdapp1
10.167.192.228 tehdapp2.linuxidc.net tehdapp2
10.167.192.229 tehdapp3.linuxidc.net tehdapp3
10.167.192.230 tehdapp4.linuxidc.net tehdapp4
10.167.192.231 tehdmonitor.linuxidc.net tehdmonitor
10.167.194.82 tehddev1.linuxidc.net tehddev1
- 配置 hostsname 文件
一般在安装操作系统的时候指定的主机名是不带域名的,这里要把 /etc/hostname 文件的内容改为带完整域名的主机名。比如如下主机名:
tehdname1.linuxidc.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
在这个界面耐心等待“继续”按钮变亮,注意,如果你现在做的是为了备份安装包而进行的单节点临时安装过程,那么到这里就可以停止了,然后进行安装包的备份操作。如果你是在安装一个实际会使用的集群,那么请点击“继续”按钮 -
检查主机正确性
在这个界面耐心等待主机检查完成,要保证没有一个错误。如果有任何错误,参考前面的配置修改,然后点“重新运行”按钮,如果没有任何问题了,就点“完成”按钮 -
选择集群服务
在集群服务选择页,选择“自定义服务”,然后选择想要安装的服务。这里说明几点:- 不要选 Isilon,否则后面的配置会麻烦点。有兴趣的可以尝试
- 不要选择 MapReduce,后面选择的 YARN 已经包含这个了
- 千万不要选择 Spark。在集群中只有一个节点时不会有问题,如果集群中有多个节点,那么 Spark 将会导致后面的安装失败,这个是可能是 CDH 的一个 BUG。解决方法是,这时候不要选 Spark,等集群安装好以后再单独添加 Spark 服务。
服务选择好以后,点击“继续”按钮
-
分配集群角色
根据自己的需求来分配就好了。尽量不要把所有的角色分配到一个节点上,避免该节点的负担太重。我这里是用虚拟机演示的,所以所有的服务都安装到唯一个这个节点了。
另外,ZooKeeper 的节点数应该为 3 或 5,这个是 Cloudera 的建议值。
角色分配完了,就点“继续”按钮 -
数据库设置
这里可以使用自定义的数据库或嵌入式的数据库,一定要保证点击“测试连接”能通过,建议自己在对应服务的节点上安装 MySQL 数据库,然后这里选择自定义数据库。测试连接通过后,点“继续”按钮 -
审核更改
这一页保持默认就可以了,或者根据实际的情况来修改。然后点“继续”按钮 -
安装服务
接下来就可以坐下来喝杯茶,慢慢等集群安装完成了。我的虚拟器的内存太小,没到装完就会卡死,只能截一个安装一部分的图了。
所有的服务都安装完成后,集群会自己启动。
本文写到这里就结束了,这里附上一张集群正常运行的截图。
完整 PDF 文档可以到 Linux 公社资源站下载:
—————————————— 分割线 ——————————————
免费下载地址在 http://linux.linuxidc.com/
用户名与密码都是www.linuxidc.com
具体下载目录在 /2017 年资料 /11 月 / 7 日 /Ubuntu 14.04 LTS 下通过 Cloudera CDH 5.4.8 搭建 Hadoop 集群 /
下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm
—————————————— 分割线 ——————————————
更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-11/148350.htm