为什么选择CDH
CDH 是cloudera 公司的产品(各种组件的各个版本比较兼容的安装包),提供Hadoop 生态系统各个工具的统一安装和管理Cloudera Manager,同时还有一家对应的公司是hortonworks,对应的提供Ambari安装包和对应的管理工具。
关于这两种产品选择的详细对比,我会选择单独的博客来说明,现在这里的选择就是随机选一个了。
安装前说明
- 这里是列表文本安装前,当然是考虑需要多大的集群,安装哪些服务,等。
- 这里主要是安装,Hdfs, Yarn, Zookeeper, Flume, Solr, Hive .
- Cloudera 提供三种安装方式,这Choose B for production。也就是选择用Cloudera Manager 进行安装,然后在安装过程中 使用 Package而没有使用 Parcel进行安装, 也就是最后在设置仓库的时候选择custom repository
主机和网络规划
我这里以五台机子做的一个集群规划,如果大家资源足够,可以考虑5台以上
# network for hadoop
10.47.66.71 sc-hadoop-1.example.com sc-hadoop-1
10.46.66.51 sc-hadoop-2.example.com sc-hadoop-2
10.46.68.89 sc-hadoop-3.example.com sc-hadoop-3
10.46.68.85 sc-hadoop-3.example.com sc-hadoop-4
10.46.68.84 sc-hadoop-3.example.com sc-hadoop-5
配置IP
配置文件位置:vim /etc/sysconfig/network-scripts/ifcfg-ethx【x 代表网卡号 0、1...】 配置完成后重启 network 生效:service network restart 外网的示例配置代码如下:
DEVICE=eth0【网卡号】
HWADDR=e8:9a:8f:3b:98:5a【机器上默认值】
TYPE=Ethernet
UUID=9f41812a-aa48-4441-88c0-a59636210780【机器上默认值】
ONBOOT=yes【设置成 yes 否则 SSH 连接出错】
NM_CONTROLLED=yes
BOOTPROTO=static【IP 静态和自动获取方式】
IPV6INIT=no【不使用 IP6】
IPADDR=10.239.44.161【Ip 地址】
NETMASK=255.255.255.0【子网掩码】
GATEWAY=10.239.44.241【网关,也可在/etc/sysconfig/network 设置】
//注:如果没有申请外网 IP 地址,改成自动获取:BOOTPROTO=dhcp,删除 IPADDR 属性。
内网的示例配置代码如下:
DEVICE=eth1
HWADDR=E8:9A:8F:3B:98:5B
TYPE=Ethernet
UUID=75660d31-caa9-417c-98e0-c26e1010b7e1
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPV6INIT=no
IPADDR=172.18.0.17
NETMASK=255.255.255.0
GATEWAY=172.18.0.255
配置DNS
配置文件位置:vim /etc/resolv.conf 添加如下内容:
search sh.example.com
search ddi.example.com
nameserver 10.248.2.1
nameserver 10.239.27.228
配置网络代理
配置文件位置:vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=sc-hadoop-1【主机名,必须正确,否则后面机器会出错】
GATEWAY=10.239.44.241【网关配置,也可在 1.1 的 ifcfg-ethx 中配置】
配置主节点代理上网
配置文件位置:vim /etc/profile 添加如下内容:
export http_proxy=http://child-prc.intel.com:911
#export http_proxy=http://proxy-socks.jf.intel.com:1080
#export http_proxy=http://proxy01.pd.intel.com:1080
#export http_proxy=http://proxy-prc.intel.com:911
以上代理选择其中一个就行。 配置文件生效:source /etc/profile 测试网络是否通:curl www.baidu.com
配置hosts
配置文件位置:vim /etc/hosts,示例配置代码如下
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.0.1 localhost
# network for hadoop
10.47.66.71 sc-hadoop-1.example.com sc-hadoop-1
10.46.66.51 sc-hadoop-2.example.com sc-hadoop-2
10.46.68.89 sc-hadoop-3.example.com sc-hadoop-3
10.46.68.85 sc-hadoop-3.example.com sc-hadoop-4
10.46.68.84 sc-hadoop-3.example.com sc-hadoop-5
系统配置及准备
配置 SSH 无密码登录
多台服务器之间免密登陆,和两台服务器之间免密登陆是一样的,把需要互相访问的主机互相上传即可
1.生成密钥对
//-P 不设置密码
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
- 拷贝 authorized_keys 到另外兩台主机 (可以从master ssh slave)
scp /home/your_name/.ssh/authorized_keys sc-hadoop-2.example.com:/home/your_name/.ssh/authorized_keys
scp /home/your_name/.ssh/authorized_keys sc-hadoop-3.example.com:/home/your_name/.ssh/authorized_keys
或者用
ssh-copy-id -i ~/.ssh/id_rsa.pub sc-hadoop-2.example.com
配置免密使用sudo
在安装Cloudera Manager 的过程中需要用到sudo 用户,或者直接使用root进行安装。
这里选择的是使用sudo 用户进行操作,所以需要配置免密使用sudo
//编辑下面的文件
sudo visudo -f /etc/sudoers.d/newfile
your-name ALL=(ALL) NOPASSWD:ALL
关闭 SELinux 配置
SELinux 支持三种模式,分别如下:
enforcing:强制模式,代表 SELinux 运作中,且已经正确的开始限制 domain/type 了;
permissive:宽容模式:代表 SELinux 运作中,不过仅会有警告讯息并不会实际限制 domain/type
的存取。这种模式可以运来作为 SELinux 的 debug 之用;
disabled:关闭:SELinux 并没有实际运作。
查看 SELinux 的模式: getenforce
查看 SELinux 政策:sestatus
设置 SELinux 模式:setenforce 0
选项与参数如下,
0 :转成 permissive 宽容模式;
1 :转成 Enforcing 强制模式
如果需要关闭 SELinux 成 disabled 必须重启机器才能生效:
文件配置位置:vim /etc/selinux/config
设置 SELINUX 值:SELINUX= disabled
集群仅做实验不涉及到安全问题,建议直接关闭 SELINUX,设置成 permissive 在安装 cloudera-
manager-installer.bin 有时也会出错
开启 httpd 服务
查看 http:service httpd status
停止 http:service httpd stop
打开 http:service httpd start
安装 cdh5 时,保持各个机器的 httpd 是打开状态。
如果没有安装:
sudo apt-get update &&
sudo apt-get install apache2 &&
sudo /etc/init.d/apache2 restart
关闭防火墙配置
查看:service iptables status 打开:service iptables start 关闭:service iptables stop 安装 cdh5 时,保持各个机器的 iptables 是关闭状态。
配置源
ubuntu 下操作:
构建repo,使用官方源。
sudo vim /etc/apt/sources.list.d/cloudera-manager.list
sudo apt-get update
安装CDH
安装JAVA
在安装Java 的时候注意目录配置,这里是从一个主机,进行批量脚本安装
注意一点就是 目录一定是要 /usr/java/jdk1.8.0_131 ,这个路径,还有JDK的版本32位,64
安装数据库
数据库是为Cloudera Manger准备的,会存储大量关于服务器的信息,生产环境需要安装单独的数据库,这里为了快速安装,使用自带的数据库,这里使用PostgreSQL 安装自定义数据库
安装在 Cloudera Manger Server 这个节点上即可
sudo apt-get install cloudera-manager-server-db-2
Setting up postgresql-9.3 (9.3.17-0ubuntu0.14.04) ...
Error: The locale requested by the environment is invalid.
Error: could not create default cluster. Please create it manually with
pg_createcluster 9.3 main --start
or a similar command (see 'man pg_createcluster').
安装 Cloudera Manager Server Packages
建议单独规划一个主机来安装 Cloudera Manager Server
如果使用上一步操(自带的数据库), Cloudera Manager Server Packages 已经安装好了
sudo apt-get install cloudera-manager-daemons cloudera-manager-server
启动
sudo service cloudera-scm-server start
安装服务
访问: http://localhost:7180 ( Cloudera Manager Serve 安装的地址)
你会看到:
这里选择Express 产品, 这里有具体的介绍Express and Enterprise
主机可以通过通配符来检索
因为安装过程中需要下载cdh, parcel ,经常网络出错, 所以自己构建一个本地仓库, 让clouder manager 使用本地仓库,文档-怎样构建自己的仓库
- 构建好仓库 http://localhost/chd5.11/
- 将仓库加到自己unbuntu中的源 , vim /etc/apt/sources.list.d/my-private-cloudera-repo.list
- 在使用Cloudera Manager新增节点的时候,add cluster - custom own repostory
example:
deb [arch=amd64] https://localhost/chd5.11/cm trusty-cm5.11.0 contrib
这一步是选择安装包的位置填写:http://localhost/cloudera/RPMS/其中 localhost 也可以改成 172.18.0.17 地址。但下面 Custom GPG Key URL 无法识别主机名,需要写成 ip 地址。
后面的就是选择要安装的主机和服务,一切顺利,那你就可以测试集群了。
必读
开始使用之前,或这安装前,或者配置前,一定要了解下面的内容。
how-does-cloudera-manager-work
https://blog.cloudera.com/blog/2013/07/how-does-cloudera-manager-work/
Q&A
- 安装中断,请查看日志
host acquiring installation lock forever
you can remove /tmp/.scm_prepare_node.lock
ubuntu常见错误--could not get lock /var/lib/dpkg/lock -open
sudo rm /tmp/.scm_prepare_node.lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
- JDK版本 的问题
exec /opt/cloudera/parcels/CDH-5.11.1-1.cdh5.11.1.p0.4/lib/hadoop-hdfs/bin/hdfs --config /run/cloudera-scm-agent/process/12-hdfs-DATANODE datanode Java HotSpot(TM) Server VM warning: You have loaded library /opt/cloudera/parcels/CDH-5.11.1-1.cdh5.11.1.p0.4/lib/hadoop/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now. It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
解决方案,请检查JDK位数对不对,下面是64位的输出,64
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)
- 无法访问 hue web ui
https://stackoverflow.com/questions/17990952/hue-web-ui-not-loading-in-browser
- Installation failed. Failed to receive heartbeat from agent
- 检查host name 对不对, 不支持下划线
- sudo kill -9 $(pgrep -f supervisord) kill 这个进程