CDH集群搭建实战

2016-05-25  本文已影响6033人  StoneHeart

1.CDH简单介绍?

CDH是什么?
hadoop是一个开源项目,所以很多公司在这个基础进行商业化,不收费的Hadoop版本主要有三个(均是国外厂商),分别是:Apache(最原始的版本,所有发行版均基于这个版本进行改进)、Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称CDH)、Hortonworks版本(Hortonworks Data Platform,简称“HDP”)。对于国内而言,绝大多数选择CDH版本,Cloudera对hadoop做了相应的改变。Cloudera公司的发行版,我们将该版本称为CDH(Cloudera Distribution Hadoop)。

2.搭建CDH集群的准备工作

此部分工作主要是为处理器集群中每台处理器分配合理的系统资源如计算资源和存储资源等,以及构建独立的运行环境和通信能力等。

2.1创建虚拟机和centos操作系统的安装

(此部分暂时略过)

2.2处理节点的网卡的配置

网卡配置文件路径:
<pre>/etc/sysconfig/network-scripts/ifcfg-eth0</pre>
网卡配置文件信息:
<pre>DEVICE=eth0 //物理设备的名称
HWADDR=00:0C:29:74:A9:86 //MAC的地址
TYPE=Ethernet //网卡类型以太网
UUID=3efa6ffe-d23c-4240-8f94-3175be11cc98
ONBOOT=yes //引导时是否激活设备
NM_CONTROLLED=yes
IPADDR=172.16.1.86 //ip地址
NETMASK=255.255.255.0 //子网掩码
BOOTPROTO=static //dhcp表示动态获得,static表示静态ip地址
GATEWAY=172.16.1.254 //网关地址
</pre>
网卡激活和禁用相关命令
<pre>ifup eth0:激活网卡
ifdown eth0:禁用网卡
</pre>
网关,子网掩码,ip地址之间的关联

<p> 网卡配置的重点 IPADDR,NETMASK,GATEWAY这三个属性的成功配置是成功的保障。ip与netmask确定主机所属的位置和子网,gateway是该网段路由的默认设置。</br>
首先IPADDR和NETMASK确定该主机所处的网络段172.16.1.0~172.16.1.255。而且此网络段的网关地址在路由器(本文中的配置)中配置的为GATEWAY=172.16.1.254,此网关即为这个网段向其他网段收发信息的中转站。一般数据包在IP层发送时首先比较发送端的ip地址的网络号与接受端的ip地址的网络号,如果判断处于同一网段则不经过网关直接发送到目的主机,但如果发送端的ip地址的网络号与接受端的ip地址的网络号不同,则将该数据包发送至该网段的网关,并由网关负责转发到接受端所处的网络段的网关,然后再由该网络段的网关发送至目标主机。至此整个网络通信完成。</p>

2.3关闭防火墙和SELinux

<code>/etc/init.d/iptables stop:关闭防火墙 </code>
<code>修改/etc/selinux/config的SELINUX=disabled:关闭SELinux </code>

2.4配置ntp时间同步

ntp配置路径:
<code>/etc/ntp.conf</code>
ntp配置文件信息:
<code>driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1 # 开启内部递归网络接口 lo
restrict -6 ::1
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
server 127.127.1.0 #开启内部递归网络接口 lo
fudge 127.127.1.0 stratum 10</code>
配置文件信息详解:
<code>
1.权限的设定主要以 restrict 这个参数来设定,格式如下:

restrict IP地址 mask 子网掩码 参数

其中 IP 可以是IP地址,也可以是 default ,default 就是指所有的IP参数有以下几个:
ignore :关闭所有的 NTP 联机服务
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网
noquery :不提供客户端的时间查询
nopeer : 不与其他同一层的ntp服务器进行时间同步
kod : 访问违规时发送 KoD 包。

restrict 127.0.0.1
确保localhost(这个常用的IP地址用来指Linux服务器本身)有足够权限.使用没有任何限制关键词的语法。
restrict -6 ::1
restrict -6 表示IPV6地址的权限设置。

2.用server这个参数设定上级时间服务器,格式如下:
server IP地址或域名 [prefer]
IP地址或域名就是我们指定的上级时间服务器,如果 Server 参数最后加上 prefer,表示我们的 NTP 服务器主要以该部主机时间进行校准。

3.driftfile格式如下:
driftfile 文件名
在与上级时间服务器联系时所花费的时间,记录在driftfile参数后面的文件内。
注意: driftfile 后面接的文件需要使用完整的路径文件名,不能是链接文件,并且文件的权限需要设定成 ntpd守护进程可以写入。
</code>
ntp相关命令:
<code>ntpq -p:查看ntp服务器与上层ntp的状态

remote refid st t when poll reach delay offset jitter

172.16.1.86 LOCAL(0) 11 u 6 64 7 0.118 617.782 0.169

remote - 本机和上层ntp的ip或主机名,“+”表示优先,“*”表示次优先

refid - 参考上一层ntp主机地址

st - stratum阶层

when - 多少秒前曾经同步过时间

poll - 下次更新在多少秒后

reach - 已经向上层ntp服务器要求更新的次数

delay - 网络延迟

offset - 时间补偿

jitter - 系统时间与bios时间差
</code>

2.5 绑定主机名与IP

将所有主机名与IP地址的对应关系写入所有主机的/etc/hosts。

2.6 安装jdk与mysql

jdk的配置主要是安装路径和环境变量的设置(网上资料交丰富,此处略去详细步骤)
mysql的安装(同上)
因为CM主要用到mysql数据库做管理,所以我们需要我CM创建数据库以及其管理账号。
<code>
Mysql>
create database scm;
create database hive;
grant all on scm.* to scm@'localhost'identified by 'abc123';
grant all on hive.* to hive@'POC-S1' identified by'abc123';
</code>

2.7 系统参数和内核优化

系统参数文件路径:
<code>/etc/security/limits.conf</code>
系统参数优化:
<code>
limits.conf的格式如下:

username|@groupname type resource limit
* soft nofile 327680
* hard nofile 327680
* soft nproc 131072
* hard nproc 131072

username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别。也可以用通配符*来做所有用户的限制。

type:有soft,hard以及-,soft指的是当前系统生效的设置值。
hard 表明系统中所能设定的最大值。
soft的限制不能比hard限制高。
用-就表明同时设置了soft和hard的值。

resource:
core - 限制内核文件的大小
date - 最大数据大小
fsize - 最大文件大小
memlock - 最大锁定内存地址空间
nofile - 打开文件的最大数目
rss - 最大持久设置大小
stack - 最大栈大小
cpu - 以分钟为单位的最多CPU时间
noproc - 进程的最大数目
as - 地址空间限制
maxlogins - 此用户允许登录的最大数目

//要使limits.conf文件配置生效,必须要确保 pam_limits.so文件被加入到启动文件中。查看 (64位)/etc/pam.d/login 文件中有:(没有就添加)session required /lib64/security/pam_limits.so
</code>
内核参数文件路径:
<code>/etc/sysctl.conf</code>
配置命令:
<code>sysctl -p</code>
内核参数优化:
<code>
net.ipv4.ip_default_ttl = 65
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 60
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_fin_timeout = 1
参数详解:(暂时略过)
</code>

3 安装cloudera manager server/agents

3.1解压CM安装包至/opt目录下

解压CM安装包
<code>
tar xzvfcloudera-manager-el6-cm5.2.1_x86_64.tar.gz -C /opt/
</code>
然后将<code>CDH-5.2.1-1.cdh5.2.1.p0.12-el6.parcel
CDH-5.2.1-1.cdh5.2.1.p0.12-el6.parcel.sha
manifest.json</code>,三个安装包移至<code>/opt/cloudera/parcel-repo/。</code>

3.2 创建cloudera-scm用户

在所有节点上创建该用户
命令groupadd和useradd

3.3 修改Agent配置文件

将agent的config.ini配置文件server_host配置项修改为主节点主机名
配置文件路径:
<code>
/opt/cm-5.2.1/etc/cloudera-scm-agent/config.ini</code>

3.4 上传mysql jdbc驱动

主要是为hive和sqoop等组件链接mysql数据库。通常用软连接的形式将驱动链入每个组件的lib库中。

3.5启动服务

只有主节点启动CM-Server
<code>
/opt/cm-5.2.1/etc/init.d/cloudera-scm-serverstart</code>
所有节点启动CM-Agent
<code>/opt/cm-5.2.1/etc/init.d/cloudera-scm-agent start</code>

4配置Cloudera Manager环境

由于是第一次安装该集群,配置是按照默认的来。以后熟悉后再补充该部分。

上一篇下一篇

猜你喜欢

热点阅读