一、说明
相比于传统Hadoop繁琐的配置文件与版本管理,CDH提供了一个可以在线搭建Hadoop等组件的集群的系统。只需要现在本地配置好jdk等环境并安装好CM Server和CM Agent服务即可在UI界面控制集群。本文介绍了CDH在CentOS7下的安装步骤。
操作系统:CentOS 7
JDK版本:1.7.0_80
所需安装包及版本说明:
CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel
CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha
manifest.json
cloudera-manager-centos7-cm5.14.2_x86_64.tar.gz
CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中
CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha1重命名为CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha,这点必须注意,否则,系统会重新下载CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel文件
本文采用离线安装方式
二、系统环境搭建
由于本机16G内存受限,所以只搭建了三个节点,如果内存够用可以适当增加几个其他节点。
搭建CDH之前需要创建虚拟机node01、node02、node03并保证3台虚拟机之间可以通信,同时需要依赖MySQL。如果没有环境的可以参考本人前两篇文章。
1、网络配置(所有节点)
修改hostname主机名
vi /etc/hosts
修改IP地址
vi /etc/sysconfig/network-scripts/ifcfg-ens33
重启网络
service network restart
修改ip与主机名的对应关系
vi /etc/hosts
2、SSH免密码登录
(1)node01、node02、node03分别执行以下命令,生成dsa。
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
cd .ssh
(2)分别分发密钥,本文只展示node01分发node02的命令,命令如下:
node01执行以下命令,分发密钥。
scp id_dsa.pub node02:`pwd` /node01.pub
node02执行以下命令
cat ~/.ssh/node01.pub >> ~/.ssh/authorized_keys
node01执行以下命令,验证免秘钥配置是否成功,如果成功,则不需要密码即可访问node02。
ssh node02
node01、node02、node03间分别执行上述命令,分发并配置密钥,实现所有节点之间可以在不使用密码的情况下互相访问。
3、关闭防火墙
临时关闭:
systemctl stop firewalld
设置开机禁用防火墙(重启后生效):
systemctl disable firewalld.service
4、关闭SELINUX
临时关闭:
setenforce 0
修改配置文件/etc/selinux/config(重启生效):
vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
SELINUX=disabled
查看SELINUX状态:
sestatus
SELinux status: enabled(enabled:开启;disabled:关闭)
2.使用命令:getenforce
5、安装JDK
解压JDK安装包
cd /opt/software
rpm -i jdk-7u67-linux-x64.rpm
编写环境变量
whereis java
vi + /etc/profile
环境变量中添加:
export JAVA_HOME=/usr/java/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
. /etc/profile
6、设置NTP(保持时间一致可以不安装)
所有节点安装NTP:
yum install ntp
配置开机启动:
chkconfig ntpd on
检查是否设置成功(2-5为on状态则成功):
chkconfig --list ntpd
设置同步(时钟服务器根据实际环境设置、本文采用210.72.145.44-国家授时中心服务器IP地址)
ntpdate -u ntp.sjtu.edu.cn
7、安装配置MySQL(node01)
yum install mysql-server
如果找不到软件包,执行如下命令
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
启动服务并进入数据库
service mysqld start
mysql
数据库中执行以下命令设置密码:
use mysql;
grant all privileges on *.* to 'root'@'%' identified by '121314' with grant option;
select host,user,password from user;
update user set password=password('121314') where user='root' and host='localhost';
flush privileges;
quit
8、下载依赖包(node01、node02、node03)
- chkconfig
- python (2.6 required for CDH 5)
- bind-utils
- psmisc
- libxslt
- zlib
- sqlite
- cyrus-sasl-plain
- cyrus-sasl-gssapi
- fuse
- portmap
- fuse-libs
- redhat-lsb
yum install -y chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb
三、Cloudera Manager Server&Agent安装
1、安装Cloudera Manager Server&Agent
拷贝cloudera-manager-centos7-cm5.14.2_x86_64.tar.gz到所有Server、Agent节点
创建cm目录(所有节点):
mkdir /opt/cloudera-manager
解压cm压缩包(node01):
cd /opt/software/
tar xvzf cloudera-manager*.tar.gz -C /opt/cloudera-manager
2、创建用户cloudera-scm(所有节点)
cloudera-scm用户说明,摘自官网:
Cloudera Manager Server and managed services are configured to use the user account cloudera-scm by default, creating a user with this name is the simplest approach. This created user, is used automatically after installation is complete.
执行:
useradd --system --home=/opt/cloudera-manager/cm-5.0/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
3、配置CM Agent(node01)
修改文件/opt/cloudera-manager/cm-5.14.2 /etc/cloudera-scm-agent/config.ini中server_host以及server_port
vi /opt/cloudera-manager/cm-5.14.2/etc/cloudera-scm-agent/config.ini
server_host=node01
server_port=7182
4、配置CM Server的数据库
将驱动包拷贝到目录下(注意拷贝过去的驱动包名字一定要和下边的一样,否则会报错):
cp /opt/software/mysql-connector-java-5.1.26-bin.jar /usr/share/java/mysql-connector-java.jar
进入MySQL执行:
grant all on *.* to 'temp'@'%' identified by 'temp' with grant option;
进入schema目录
cd /opt/cloudera-manager/cm-5.14.2/share/cmf/schema/
执行./scm_prepare_database.sh mysql -h myhost1.sf.cloudera.com -utemp -ptemp --scm-host myhost2.sf.cloudera.com scm scm scm格式代码
例如:
./scm_prepare_database.sh mysql -h node01 -utemp -ptemp --scm-host node01 scm scm scm
(对应于:数据库类型、数据库服务器、用户名、密码、CMServer所在节点…….)
5、创建Parcel目录(node01)
(1)Manager节点创建目录/opt/cloudera/parcel-repo,执行:
mkdir -p /opt/cloudera/parcel-repo
chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
将下载好的文件(CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel、CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha、manifest.json)拷贝到该目录下。
(2)Agent节点创建目录/opt/cloudera/parcels,执行:
mkdir -p /opt/cloudera/parcels
chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
(3)拷贝文件并改名
cp /opt/software/CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel* /opt/cloudera/parcel-repo/
mv CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha1 CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha
cp /opt/software/manifest.json /opt/cloudera/parcel-repo/
(4)分发cloudera-manager
scp -r /opt/cloudera-manager/* root@node02:/opt/cloudera-manager/
scp -r /opt/cloudera-manager/* root@node03:/opt/cloudera-manager/
6、启动CM Server&Agent服务
cd /opt/cloudera-manager/cm-5.14.2/etc/init.d/
执行:
node01启动Server:
/opt/cloudera-manager/cm-5.14.2/etc/init.d/cloudera-scm-server start
node01、node02、node03启动Agents:
/opt/cloudera-manager/cm-5.14.2/etc/init.d/cloudera-scm-agent start
Sever首次启动会自动创建表以及数据,不要立即关闭或重启,否则需要删除所有表及数据重新安装
访问:http://node01:7180,若可以访问(用户名、密码:admin),则安装成功。
Manager启动成功需要等待一段时间,过程中会在数据库中创建对应的表需要耗费一些时间。
登录后进入如下界面
四、CDH5安装
1、CM Manager && Agent成功启动后,登录前端页面(用户名、密码:admin)进行CDH安装配置。http://node01:7180
2、选择Cloudera Express免费版本,CM5已经去除50个节点数量的限制。
3、各个Agent节点正常启动后,可以在当前管理的主机列表中看到对应的节点。选择要安装的节点,点继续。
4、接下来,出现以下包名,说明本地Parcel包配置无误,直接点继续就可以了。
本文使用的版本为CDH5.14.2-cdh5.14.2.p0.3。
5、点击,继续,如果配置本地Parcel包无误,那么下图中的已下载,应该是瞬间就完成了,然后就是耐心等待分配过程就行了,大约10多分钟吧,取决于内网网速。
(若本地Parcel有问题,重新检查创建Parcel目录是否配置正确)
6、接下来是服务器检查,可能会遇到以下问题:
Cloudera 建议将 /proc/sys/vm/swappiness 设置为 0。当前设置为 60。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf 以在重启后保存该设置。您可以继续进行安装,但可能会遇到问题,Cloudera Manager 报告您的主机由于交换运行状况不佳。以下主机受到影响:
通过以下命令即可解决。
echo 0 > /proc/sys/vm/swappiness
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
7、接下来是选择安装服务:
测试采用了自定义服务,实际按工作环境来定咯~~
选择了HDFS、YARN(包含MapReduce2)、ZooKeeper
8、服务配置,一般情况下保持默认就可以了(Cloudera Manager会根据机器的配置自动进行配置,如果需要特殊调整,自行进行设置就可以了)
由于本机16G内存受限,所以只搭建了三个节点,导致NameNode与SecondaryNameNode在同一节点并且只有1个ResourceManager,如果内存够用可以适当增加几个其他节点。
9、下面是集群设置的审查页面,都是保持默认配置的:
10、服务的安装过程大约半小时内就可以完成,安装完成后,就可以进入集群界面看一下集群的当前状况了。
启动成功后进入集群监控页面。
五、添加Hive、Oozie、Hue、Impala等服务
1、MySQL建库&&删库
Hive
create database hive DEFAULT CHARACTER SET utf8;
grant all on hive.* TO 'hive'@'%' IDENTIFIED BY 'hive';
Oozie
create database oozie DEFAULT CHARACTER SET utf8;
grant all on oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie';
Hue
create database hue DEFAULT CHARACTER SET utf8;
grant all on hue.* TO 'hue'@'%' IDENTIFIED BY 'hue';
2、安装hive
(1)添加服务->Hive
(2)添加数据库配置
由于Hive需要依赖于数据库,所以此时需要额外添加数据库配置,数据库、用户名、密码就使用刚才创建好的。
(3)后续部分和上一部分的安装服务几乎一样,傻瓜式安装,直接点击“继续”即可。
3、安装Oozie
安装方式同Hive。
(1)添加服务->Oozie
(2)Oozie需要先选择依赖组件,选择带有Hive的一个。
(3)自定义Oozie角色分配,使用CDH默认的即可。
(4)添加数据库配置,使用之前创建好的oozie数据库以及oozie用户即可。
(5)审核更改。
(6)添加成功。
4、安装Hue
安装方式同Hive。
(1)添加服务->Hue
(2)Hue需要先选择依赖组件,选择带有Hive和Oozie的一个(由于只有一个可选项,所以有时CDH会自动帮我们选上此可选项并直接进入下一项配置)。
(3)自定义 Hue 的角色分配,使用CDH自动分配的即可。
(4)添加数据库配置,使用之前创建好的hue数据库以及hue用户即可。
(5)审核更改。
(6)添加成功。
5、安装Impala
安装方式同Hive。
(1)添加服务->Impala
(2)Impala需要先选择依赖组件,选择带有Hive的一个(由于只有一个可选项,所以有时CDH会自动帮我们选上此可选项并直接进入下一项配置)。
(3)自定义 Impala的角色分配,使用CDH自动分配的即可。
(5)审核更改。
(6)添加成功。
6、启动
此时已经启动了所有需要的服务,CDH页面应该如下图所示。
jps命令显示的运行中角色如下:
分别执行以下命令在node02启动Impala并在node03启动Hive。
node02:
impala-shell
node03:
hive --service cli
六、小结
相比于传统Hadoop繁琐的配置文件与版本管理,CDH提供了一个可以在线搭建Hadoop等组件的集群的系统。只需要现在本地配置好jdk等环境并安装好CM Server和CM Agent服务即可在UI界面控制集群。
后续CDH的启动命令如下:
node01启动Server:
/opt/cloudera-manager/cm-5.14.2/etc/init.d/cloudera-scm-server start
node01、node02、node03启动Agents:
/opt/cloudera-manager/cm-5.14.2/etc/init.d/cloudera-scm-agent start
UI地址为 http://node01:7180