基于Cloudera CDH的Hadoop平台搭建

Cloudera 企业级Apache Hadoop 提供商和服务商,提供产品、专业服务、技术支持与培训。是目前在Hadoop生态系统中,规模最大、知名度最高的公司,也是Hadoop生态主要贡献者。

Cloudera CDH 套件几乎集成了 Hadoop 生态所有组件,虽然版本略有滞后,但解决了最困难的组件间兼容性问题,并补丁。
Cloudera Express 和 Cloudera Enterprise 为 Cloudera 商业产品软件,包括免费版与企业版。提供了一个基于 Web 的用户界面,应用程序,部署、管理、监控的解决方案。

网站:http://zh-cn.cloudera.com/content/www/en-us.html
文档:http://www.cloudera.com/content/www/en-us/documentation.html
中文文档:http://www.cloudera.com/content/www/zh-CN/documentation/enterprise/5-3-x/topics/cdh_intro.html

下载:

https://archive.cloudera.com/cdh5/
http://archive.cloudera.com/cm5/
http://archive.cloudera.com/cloudera-labs/

CentOS 安装与初始化配置



初始化

安装一些基础的软件和开发包

yum install gcc gcc-c++ autoconf automake make cmake libevent libtool libXaw expat-devel libxml2-devel libevent-devel asciidoc cyrus-sasl-devel cyrus-sasl-gssapi krb5-devel libtidy libxslt-devel python-devel openssl-devel gmp-devel
yum install wget mlocate screen ntp unzip zip parted  rsync tree vim lrzsz
yum install tcpdump telnet sysstat lsof strace iptraf iotop snappy snappy-devel

检查CPU/内存/磁盘情况

top
fdisk -l

网络,主机名

vi /etc/sysconfig/network
hostname hadoop-01
vi /etc/hosts

防火墙

部署阶段关闭软件防火墙:

/etc/init.d/iptables stop
chkconfig iptables off

SELINUX

关闭SELINUX(需要重启):

sestatus
vi /etc/sysconfig/selinux

打开文件数限制

查看并修改

ulimit -a 

vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft core unlimited
* hard core unlimited

内核参数调整

主要为TCP一些参数调整,打开文件数限制,swap使用限制

net.unix.max_dgram_qlen = 100
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
kernel.msgmnb = 4203520
kernel.msgmax = 8192
kernel.msgmni = 256

net.core.somaxconn = 32768
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

net.ipv4.neigh.default.gc_stale_time=120
net.ipv4.ip_local_port_range = 20000 65000

net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_mem  =   379008       505344  758016
net.ipv4.tcp_rmem = 4096        87380   4194304
net.ipv4.tcp_wmem = 4096        16384   4194304
net.ipv4.tcp_max_orphans = 3276800

net.ipv4.tcp_max_tw_buckets = 200000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 81920
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.route.max_size = 5242880
net.ipv4.tcp_max_tw_buckets = 200000
net.ipv4.tcp_synack_retries=3

fs.file-max =65536
vm.swappiness = 1

压缩解压缩工具

HBase与一些组件需要的解压缩工具:

yum install snappy snappy-devel

时间同步

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate us.pool.ntp.org
echo "0 */8 * * * /usr/sbin/ntpdate us.pool.ntp.org" >> /var/spool/cron/root

/etc/init.d/ntpd start
ntpdate

透明大页面

启用“透明大页面”,它可能会导致重大的性能问题。具体自行查阅相关介绍

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
vi /etc/rc.local

以禁用此设置,然后将同一命令添加到一个 init 脚本中

Cloudera CDH安装说明

三种安装方式

CDH 支持三种安装方式:
1. 通过官方提供的 bin 文件,直接运行下载安装
2. 使用官方提供的软件包比如yum,rpm手动安装
3. 通过源码手动安装

2和1其实差不多,只不过1是无人职守的。2使用yum通过官方源下载安装,但是由于是国外网站,下载经常中断,所以这里针对2稍作修改,是先下载所需软件,然后通过yum本地安装的模式。

上传文件包

cloudera-manager-agent-5.5.1-1.cm551.p0.8.el6.x86_64.rpm
cloudera-manager-daemons-5.5.1-1.cm551.p0.8.el6.x86_64.rpm
cloudera-manager.repo
cloudera-manager-server-5.5.1-1.cm551.p0.8.el6.x86_64.rpm
cloudera-manager-server-db-2-5.5.1-1.cm551.p0.8.el6.x86_64.rpm
CDH-5.5.1-1.cdh5.5.1.p0.11-el6.parcel
CDH-5.5.1-1.cdh5.5.1.p0.11-el6.parcel.sha1
jdk-8u131-linux-x64.rpm
cp cloudera-manager.repo /etc/yum.repos.d/

JDK 安装

cd /root/cloudera
rpm -ivh jdk-8u131-linux-x64.rpm
vi /etc/profile

修改环境变量vi

export JAVA_HOME=/usr/java/default
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
java -version

很多地方说需要设置CLASSPATH,这里好像并不需要

挂载磁盘

CDH 所有的组件默认会安装在 /opt目录,所以请尽量把大容量磁盘挂在到/opt目录下,同时设置fstab,增加noatime, nodelalloc

vi /etc/fstab
/dev/VG01/lv01          /opt                    ext4    defaults,noatime,nodelalloc     0 0
mount -a

安装 Server 与 Agent

yum -y --nogpgcheck localinstall cloudera-manager-daemons*.rpm cloudera-manager-server*.rpm
yum -y --nogpgcheck localinstall cloudera-manager-agent*.x86_64.rpm

非主控节点安装 (需要注意修改指向主节点配置)

vi /etc/cloudera-scm-agent/config.ini
[General]
server_host=192.168.0.91
server_port=7182

非主控节点不需要启动管理服务

chkconfig cloudera-scm-server off
chkconfig cloudera-scm-server-db off

主控节点启动管理服务

service cloudera-scm-server-db start
service cloudera-scm-server start
netstat -tunlp

这里我们介绍一下它的安装机制:
目前为止如果顺利的话我们已经安装好了它的服务器组件,但是CDH组件还没有安装,CDH组件是通过自带的Web集群配置向导安装的。
这里最大的问题就是会在主节点上下载CDH组件软件包,这个软件包有1.4G,所以我们提前下载好,放到所在目录
其他节点在配置的时候也是从主节点复制过去的。

操作:
将CHD5相关的包:CDH-5.5.1-1.cdh5.5.1.p0.11-el6.parcel 与CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha1,放到主节点的/opt/cloudera/parcel-repo/目录中
同时将CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha1重命名为CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha
这点必须注意,否则,系统会重新下载CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel文件。

同时需要注意设置主节点与其他节点的目录权限:

chmod -R 777 /opt/cloudera

配置节点hosts

192.168.0.1 node1
192.168.0.1 node2
192.168.0.1 node3

集群配置向导

cloudera-scm-server启动以后,正常情况可以在主节点的7180端口访问 Web界面

http://ip:7180/

首次安装会进入配置向导,首先选择版本类型,Express,只有这个是免费的。
依次会进行以下步骤:
自动安装agent,server
部署CDH组件
配置角色

注意:在CDH组件初始化的时候,需要将所有的组件的数据目录,都修改为/opt目录下

安装完成以后,我们还要首先需要调整所有组件的日志目录,修改为磁盘空间大的位置:

在集群管理配置->日志配置,修改所有的日志目录为/opt

然后留意以下组件的某些相关配置,修改目录为/opt

HDFS 高级
Hbase 配置
Impala 主要、高级
YARN 主要、高级

最后修改所有组件的日志级别,默认为INFO,至少修改为WARN

详细配置

HDFS 配置->资源管理:
NameNode 的 Java 堆栈大小(字节) 1G
Secondary NameNode 1G
DataNode 的 Java 堆栈大小(字节) 1G
用于缓存的最大内存 1G
Balancer 的 Java 堆栈大小(字节) 1G
HDFS 配置->复制:
dfs.replication 2

HBase 配置->资源管理:

HBase Master 的 Java 堆栈大小(字节)1G
HBase RegionServer 的 Java 堆栈大小(字节) 4G
HBase Thrift 的 Java 堆栈大小(字节)2G
RegionServer Memstore 大小,默认128MB
RegionServer HFile大小,默认10G

YARN 配置->资源管理:
NodeManager 的 Java 堆栈大小(字节)1G
ResourceManager 的 Java 堆栈大小(字节)1G
容器内存 1G
容器虚拟 CPU 内核 6

Zookeeper 配置->资源管理:
ZooKeeper Server 的 Java 堆栈大小(字节)1G
最大会话超时 1800000

Oozie 配置->资源管理:
Oozie Server 的 Java 堆栈大小(字节)

Hive 配置->资源管理:

Hive Metastore Server 的 Java 堆栈大小(字节) 1G

测试集群

HDFS 与 YARN 测试

计算圆周率

hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.5.1.jar pi 10 100000

计算单词计数

hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.5.1.jar pi 10 100000

HBase 测试

执行 hbash shell

如何卸载重新安装

service cloudera-scm-server stop
service cloudera-scm-server-db stop
service cloudera-scm-agent stop

rm -Rf /usr/share/cmf
rm -Rf /var/lib/cloudera*
rm -Rf/var/cache/yum/cloudera*
rm -Rf/var/log/cloudera*
rm -Rf /var/run/cloudera*

/usr/share/cmf/uninstall-cloudera-manager.sh
yum remove 'cloudera-manager-*'
yum clean all

所有agent运行

rm /tmp/.scm_prepare_node.lock
rm -Rf /var/lib/flume-ng /var/lib/hadoop* /var/lib/hue /var/lib/navigator /var/lib/oozie /var/lib/solr /var/lib/sqoop* /var/lib/zookeeper

问题汇总

Error, CM server guid updated, expected 85587073-270d-43d9-a44a-e213d9f7e45b, received 4c1402a5-8364-4598-a382-0c760710e897

删除节点 /var/lib/cloudera-scm-agent/cm_guid 并重启agent

单用户模式

不要配置

Kafka 监听所有端口

listeners=PLAINTEXT://0.0.0.0:9092