0%

基于Cloudera CDH的Hadoop平台搭建

介绍

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

网站: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

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

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

安装与初始化配置



初始化

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

1
2
3
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/内存/磁盘情况

1
2
top
fdisk -l

网络,主机名

1
2
3
vi /etc/sysconfig/network
hostname hadoop-01
vi /etc/hosts

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

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

SELINUX,关闭SELINUX(需要重启):

1
2
sestatus
vi /etc/sysconfig/selinux

打开文件数限制,查看并修改

1
2
3
4
5
6
7
ulimit -a

vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
* soft core unlimited
* hard core unlimited内核参数调整

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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 =65535
vm.swappiness = 1

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

1
yum install snappy snappy-devel

时间同步

1
2
3
4
5
6
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

透明大页面

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

1
2
3
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
vi /etc/rc.local
以禁用此设置,然后将同一命令添加到一个 init 脚本中

Cloudera CDH安装说明三种安装方式

CDH 支持三种安装方式:

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

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

上传文件包

1
2
3
4
5
6
7
8
9
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
oracle-j2sdk1.7-1.7.0+update67-1.x86_64.rpm
cp cloudera-manager.repo /etc/yum.repos.d/

JDK 安装

1
2
3
4
5
6
7
8
9
yum -y --nogpgcheck localinstall oracle-j2sdk1.7-1.7.0+update67-1.x86_64.rpm
ln -s /usr/java/jdk1.7.0_67-cloudera/ /usr/java/default

# 修改环境变量
vi /etc/profile
export JAVA_HOME=/usr/java/default
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
java -version

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

挂载磁盘

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

1
2
3
4
vi /etc/fstab
/dev/VG01/lv01 /opt ext4 defaults,noatime,nodelalloc 0 0

mount -a

安装 Server 与 Agent

1
2
3
4
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
1
2
3
[General]
server_host=192.168.0.91
server_port=7182
1
2
3
4
5
6
7
8
# 非主控节点不需要启动管理服务
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文件。集群配置向导

访问 Web GUI

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

1
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

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 测试

计算圆周率

1
2
# 计算单词计数
hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.5.1.jar pi 10 100000

HBase 测试

1
hbash shell

如何卸载重新安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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