cm5.13.1 & cdh5.13.1 安装文档
CM5 & CDH(5.13.x) 离线安装
概述
CDH (Cloudera's Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,并集成了很多补丁,可直接用于生产环境。
Cloudera Manager则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机、Hadoop、Hive、Spark等服务的安装配置管理做了极大简化。
注:本文档所有操作均使用root登陆操作。
文件下载
-
CDH:
http://archive.cloudera.com/cdh5/parcels/5.13.1/manifest.json
http://archive.cloudera.com/cdh5/parcels/5.13.1/CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel.sha1
http://archive.cloudera.com/cdh5/parcels/5.13.1/CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel -
Cloudera Manager:
http://archive.cloudera.com/cm5/cm/5/cloudera-manager-centos7-cm5.13.1_x86_64.tar.gz -
mysql jdbc:
http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.47/mysql-connector-java-5.1.47.jar
一 环境搭建
-
硬件软件要求:
我这6台机器node1,node2,node3,node4,node5,node6。node1-node5配置为8core-16G-100G,node6配置为4core-8G-100G。node1作为主节点master。master配置:16g内存,16核,如果是自己虚拟机的话master至少8g,因为装完集群(装了8个应用组件)master的内存已用了7g多。
集群操作系统是centos7 -
网络配置(所有节点)
1)修改主机名(这里建议改一个简短的名字,比如node1-node6,由于公司有名称限制,所以我就不改动前缀了):vi /etc/sysconfig/network修改hostname : NETWORKING=yes HOSTNAME=hd1-g-pre-dc-node1
2)配置ip和和主机名的对应关系(如果不想改主机名的话用域名去做对应关系也可以,但是在web界面查看主机的时候可能无法分清楚是哪台主机故障),我们可以用vi /etc/hosts来修改这个关系:
192.168.100.1 hd1-g-pre-dc-node1 192.168.100.2 hd1-g-pre-dc-node2 192.168.100.3 hd1-g-pre-dc-node3 192.168.100.4 hd1-g-pre-dc-node4 192.168.100.5 hd1-g-pre-dc-node5 192.168.100.6 hd1-g-pre-dc-node6
如果想通过域名来增加关系,则可以使用此方法
192.168.100.1 node1 hd1-g-pre-dc-node1 192.168.100.2 node2 hd1-g-pre-dc-node2 192.168.100.3 node3 hd1-g-pre-dc-node3 192.168.100.4 node4 hd1-g-pre-dc-node4 192.168.100.5 node5 hd1-g-pre-dc-node5 192.168.100.6 node6 hd1-g-pre-dc-node6
-
设置SSH无密码访问(所有节点)
1)每台生成公钥私钥
ssh-keygen -t rsa或者 ssh-keygen -t rsa -f ~/.ssh/id_rsa
2)将每台/root/.ssh/id_rsa.pub公钥内容拷贝到机器node1的authorized_keys文件中
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
3)其他主机的id_rsa.pub拷贝到同一台机器node1的authorized_keys
ssh-copy-id root@node1
如果没有ssh-copy-id 执行
sudo yum -y install openssh-clients
4)复制机器node5的authorized_keys文件拷贝到其它主机
scp /root/.ssh/authorized_keys root@node1:/root/.ssh
如果不知道密码,则暂时无法使用scp命令,这时候可以使用copy到本地然后到其它服务器用vi命令粘贴上去
5)如果启动无效果,需要修改ssh配置vim /etc/ssh/sshd_config
RSAAuthentication yes #启用 RSA 认证 PubkeyAuthentication yes #启用公钥私钥配对认证方式 AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径(和上面生成的文 StrictModes no
设置完之后记得重启SSH服务,才能使刚才设置有效。
service sshd restart
注意:首次ssh连接时会弹出一个(yes/no)的输入框,输入yes即可
-
安装Oracle Java(所有节点)
1)前往oracle下载jdk1.8版本
2)解压jdk
tar zxvf jdk-8u181-linux-x64.tar.gz -C /usr/
3)配置环境变量
vi /etc/profile export JAVA_HOME=/usr/jdk1.8.0_181 export PATH=$JAVA_HOME/bin:$PATH
4)启用环境变量
source /etc/profile
-
安装配置Mysql(主节点)
1)下载mysql服务端5.7版本
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
2)解压mysql安装包
tar -zxvf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz -C /usr/local cd /usr/local mv mysql-5.7.23-linux-glibc2.12-x86_64 mysql
3)创建用户和组
groupadd mysql useradd -r -g mysql mysql
4)创建mysql数据目录(新目录不存在则创建)
mkdir -p mysql/data
5)修改目录权限
cd mysql chown -R mysql:mysql ./
6)初始化数据库
bin/mysqld –-initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
这个可能会提示
bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
我们可以用以下命令来解决libaio.so共享库的错误
yum install -y libaio
再重新执行mysqld -initialize时,即可看见提示成功,这是我们需要记录密码(
ZyBafltW,4XA
)1 [Note] A temporary password is generated for root@localhost: ZyBafltW,4XA
7)添加启动服务
cp support-files/mysql.server /etc/init.d/mysqld
8)启动mysql
service mysqld start
如果出现如下错误:
/etc/init.d/mysqld: line 239: my_print_defaults: command not found /etc/init.d/mysqld: line 259: cd: /usr/local/mysql: No such file or directory Starting MySQLCouldn't find MySQL server (/usr/local/mysql/[FAILED]ld_safe)
那么是因为我们的/etc/init.d/mysql文件里没有配置
basedir=/usr/local/mysql
和datadir=/usr/local/mysql/data
的参数basedir=/usr/local/mysql datadir=/usr/local/mysql/data
9)修改mysql密码和开启远程连接
/usr/local/mysql/bin/mysql -u root -p #输入刚才生成的密码,每个人的密码都不一样 ZyBafltW,4XA #这条语句设置mysql的密码并且允许所有机器以root帐号访问mysql,在实际情况下不建议把mysql的root用户曝光给所有机器访问 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;
10)创建cm所需要的数据库
#为hive建库hive create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci; #activity monitor create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci; #为oozie建库oozie create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci; #为hue建库hue create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
11)设置mysql开机启动
chkconfig --add mysqld chkconfig --level 2345 mysqld on
-
关闭防火墙和SELinux(所有节点)
注意: 需要在所有的节点上执行,因为涉及到的端口太多了,临时关闭防火墙是为了安装起来更方便,安装完毕后可以根据需要设置防火墙策略,保证集群安全。
关闭防火墙:
#临时关闭 service iptables stop #重启后生效 chkconfig iptables off
关闭SELINUX(实际安装过程中发现没有关闭也是可以的,不知道会不会有问题,还需进一步进行验证):
setenforce 0 (临时生效)
修改 /etc/selinux/config 下的 SELINUX=disabled (重启后永久生效) -
配置NTP服务(所有节点)
1)安装ntpd
yum install ntpd #在弹出的对话框中选择y确认安装
2)在/etc/ntp.cnf配置ntp
#local clock server node1 server 0.centos.pool.ntp.org server 1.centos.pool.ntp.org server 2.centos.pool.ntp.org
2)配置开机自启动
#开启ntpd服务 systemctl start ntpd.service #设置开机自启动 systemctl enable ntpd.service
二 Cloudera Manager安装与集群配置
-
把cm拷贝到其它5个节点
#拷贝cm scp cloudera-manager-centos7-cm5.13.1_x86_64.tar.gz root@node2:/home/xccm/package/ scp cloudera-manager-centos7-cm5.13.1_x86_64.tar.gz root@node3:/home/xccm/package/ scp cloudera-manager-centos7-cm5.13.1_x86_64.tar.gz root@node4:/home/xccm/package/ scp cloudera-manager-centos7-cm5.13.1_x86_64.tar.gz root@node5:/home/xccm/package/ scp cloudera-manager-centos7-cm5.13.1_x86_64.tar.gz root@node6:/home/xccm/package/ #拷贝mysql connector scp mysql-connector-java-5.1.47.jar root@node6:/home/xccm/package/ scp mysql-connector-java-5.1.47.jar root@node5:/home/xccm/package/ scp mysql-connector-java-5.1.47.jar root@node4:/home/xccm/package/ scp mysql-connector-java-5.1.47.jar root@node3:/home/xccm/package/ scp mysql-connector-java-5.1.47.jar root@node2:/home/xccm/package/
-
各个节点解压文件
#解压cm tar -zxvf cloudera-manager-centos7-cm5.13.1_x86_64.tar.gz -C /opt #将mysql连接驱动放到cm包下 mv mysql-connector-java-5.1.47.jar /opt/cm-5.13.1/share/cmf/lib/
-
主节点初始化数据库
#初始化数据库 /opt/cm-5.13.1/share/cmf/schema/scm_prepare_database.sh -hnode1 -uroot -p123456 --scm-host node1 mysql scm scm scm #参数分别是: -h数据库主机名 -u数据库用户名 -p数据库密码--scm-host cmserver主机名 数据库类型 数据库名称 用户名 密码
-
Agent配置并同步到其它服务器
1)修改/opt/cm-5.1.3/etc/cloudera-scm-agent/config.ini中的server_host为主节点的主机名,这里是node1。
2)同步Agent到其他节点
scp -r /opt/cm-5.1.3 root@node2:/opt/ scp -r /opt/cm-5.1.3 root@node3:/opt/ scp -r /opt/cm-5.1.3 root@node4:/opt/ scp -r /opt/cm-5.1.3 root@node5:/opt/ scp -r /opt/cm-5.1.3 root@node6:/opt/
3)在所有节点服务器创建cloudera-scm用户
useradd --system --home=/opt/cm-5.13.1/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
4)准备Parcels,用以安装CDH5
将CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中(parcel-repo需要手动创建)。
相关的文件如下:CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel
CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel.sha1
manifest.json最后将CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel.sha1,重命名为CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel.sha,这点必须注意,否则,系统会重新下载CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel文件。
5)启动脚本
主节点:通过/opt/cm-5.13.1/etc/init.d/cloudera-scm-server start启动服务端。 所有节点(包括主节点):通过/opt/cm-5.13.1/etc/init.d/cloudera-scm-agent start启动Agent服务。 我们启动的其实是个service脚本,需要停止服务将以上的start参数改为stop就可以了,重启是restart。
6)CDH5安装配置
浏览器输入:192.168.100.1:7180开始进入登录页面,默认用户名和密码是admin/admin
然后按照流程一步一步的选择来安装,web安装错误参考http://blog.xumingxiang.com/259.html
参考资料:
mysql安装文档:
1. https://www.cnblogs.com/xxoome/p/5864912.html
2. http://www.cnblogs.com/achengmu/p/9558684.html
Cloudera Manager安装文档:
1. http://blog.xumingxiang.com/259.html
2. https://blog.csdn.net/HFUTLXM/article/details/77605022?locationNum=6&fps=1