特别声明:LZ按照教程完整的走了一遍,最终所有组件都是正常的,中间遇到很多坑,做了一些修改,本文最后会将遇到的一些坑总结到一片新文章中
windows虚拟机安装CDH
cpu | 16G内存 | ||
---|---|---|---|
默认单核单线 | DEV2 | Server&&Agent | 5G |
默认单核单线 | DEV3 | Agent | 1G |
默认单核单线 | DEV4 | Agent | 1G |
关于CDH和Cloudera Manager
CDH (Cloudera’s Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,并集成了很多补丁,可直接用于生产环境。
Cloudera Manager则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机、Hadoop、Hive、Spark等服务的安装配置管理做了极大简化。
##系统环境
##相关包的下载地址
Cloudera Manager下载地址:
http://archive.cloudera.com/cm5/cm/5/cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz
CDH安装包地址: http://archive.cloudera.com/cdh5/parcels/latest/
由于我们的操作系统为CentOS7.5,需要下载以下文件:
##准备工作:系统环境搭建
以下操作均用root用户操作。
#####1. 网络配置(所有节点)
注意:这里需要自行配置静态IP,因为不配置静态IP,如果机器重启后IP发生变化,则集群间的通信就失败了
配置静态ip:
vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改:
虚拟机链接方式改成桥接
BOOTPROTO=static
ONBOOT=yes
新增:
IPADDR=192.168.0.102
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=202.106.0.20
这里的DNS1根据自己的情况,我这里设置的是北京联通,设置后linux就能连接网络,通过yum安装一些必须的包
通过 service network restart
重启网络,静态ip生效,是同ip addrc查看ip是否生效。
`vi /etc/sysconfig/network` 修改hostname:
NETWORKING=yes
HOSTNAME=DEV2
通过 service network restart
重启网络服务生效。
vi /etc/hosts
,修改ip与主机名的对应关系
192.168.0.102 DEV2
192.168.0.103 DEV3
192.168.0.104 DEV4
注意: 这里需要将每台机器的ip及主机名对应关系都写进去,本机的也要写进去,否则启动Agent的时候会提示hostname解析错误。
#####2.打通SSH,设置ssh无密码登陆(所有节点)
在主节点上执行 ssh-keygen -t rsa
一路回车,生成无密码的密钥对。
将公钥添加到认证文件中:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
,
并设置authorized_keys的访问权限:
chmod 600 ~/.ssh/authorized_keys
。
scp文件到所有datenode节点(传完后进入到DEV3中执行上述操作):
scp ~/.ssh/authorized_keys root@DEV3:~/.ssh/
这里需要注意DEV3中的~/.ssh/目录下需要存在authorized_keys文件。否则会有一些奇怪的问题
测试: 在主节点上ssh DEV3
,正常情况下,不需要密码就能直接登陆进去了。
#####3.安装Oracle的Java(所有节点)
CentOS,自带OpenJdk,不过运行CDH5需要使用Oracle的Jdk,需要Java 7的支持
jdk-7u79-linux-x64.rpm:
https://pan.baidu.com/s/1H_uJg8-8AA8s1sECz5SfIw
卸载自带的OpenJdk,使用 rpm -qa | grep java
查询java相关的包,使用 rpm -e --nodeps 包名
卸载之。
使用 rpm -ivh 包名
安装之
如/usr/java/jdk-7u79-linux-x64.rpm
,在/usr/java/
目录下运行rpm -ivh jdk-7u79-linux-x64.rpm
JAVA_HOME=/usr/java/jdk1.7.0_79
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
PATH=$JAVA_HOME/bin:$HOME/bin:$HOME/.local/bin:$PATH
#####4. 关闭防火墙(所有节点)
centos 7 默认使用的是firewall,不是iptables
systemctl stop firewalld.service
systemctl mask firewalld.service
#####5. 关闭SELinux(所有节点)
[root@DEV1 .ssh]# vim/etc/selinux/config
设置SELINUX=disabled
#####6. 配置NTP服务(所有节点)
安装
[root@DEV1 .ssh]# yum install ntp
设置开机启动
[root@DEV1 .ssh]# chkconfig ntpd on
服务启动
[root@DEV1 .ssh]# service ntpd start
#####7. 所有节点上创建用户(所有节点)
useradd --system \
--home=/opt/cm-5.15.0/run/cloudera-scm-server/ \
--no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
#####8. 安装MySQL(主节点安装即可)
(1)卸载mariadb
此处需要注意的是centos 7 默认安装的是mariadb,如果不卸载直接安装的话会报错,报错信息mariadb-libs is obsoleted by mysql-community-libs-5.7.21-1.el7.x86_64
注意:必须先做一下步骤,要先删除mariadb
rpm -qa | grep mariadb #查看安装信息
rpm --nodeps -e mariadb-libs-5.5.56-2.el7.x86_64 #根据查找到的软件包信息卸载
(2)安装MySQL(必须按以下顺序安装)
解压 tar -xf mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
rpm -ivh mysql-community-common-5.7.21-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.21-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.21-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.21-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.21-1.el7.x86_64.rpm
(compat解决hue数据库连接不上)
rpm -ivh mysql-community-devel-5.7.21-1.el7.x86_64.rpm
#安装mysqlclient需要用到
(3)基本设置
service mysqld start
#启动服务
cat /var/log/mysqld.log |grep password
#查看初始密码
mysql -uroot -p
#登录
set password = password('1234');
#设置密码
报错:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
首先,修改validate_password_policy参数的值
mysql> set global validate_password_policy=0;
这样,判断密码的标准就基于密码的长度了。这个由validate_password_length参数来决定。
validate_password_length参数默认为8,可以设置为其它值,最小4位
mysql> set global validate_password_length=1;
mysql> set password = password('1234');
Query OK, 0 rows affected,1 warning (0.00 sec)
授权用户root使用密码passwd从任意主机连接到mysql服务器
GRANT ALL PRIVILEGES ON *.* TO 'root'@'DEV2' IDENTIFIED BY 'mysql密码' WITH GRANT OPTION;
flush privileges;
(4)建数据库(用于后边组件安装)
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
##安装Cloudera Manager Server 和Agent
(1)解压
将下载好的cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz解压到主节点的/opt/,解压出来的文件夹为cloudera与cm-5.15.0
(2)为Cloudera Manager建立数据库
将前边下载好的mysql-connector-java-5.1.46.tar.gz解压,找到文件夹中的
mysql-connector-java-5.1.45-bin.jar
cp mysql-connector-java-5.1.45-bin.jar /opt/cm-5.15.0/share/cmf/lib/
cp mysql-connector-java-5.1.45-bin.jar /usr/java/
/opt/cm-5.15.0/share/cmf/schema/scm_prepare_database.sh mysql -hlocalhost -uroot -p scm scm
(3)配置Agent
vim /opt/cm-5.14.0/etc/cloudera-scm-agent/config.ini
server_host=DEV2
拷贝到其他节点
[root@DEV1]# scp -r /opt/cm-5.15.0/ root@DEV3:/opt/
[root@DEV1]# scp -r /opt/cm-5.15.0/ root@DEV4:/opt/
(4)准备parcels
将CDH相关文件拷贝到主节点/opt/cloudera/parcel-repo/
相关文件
CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel
CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha1
manifest.json
需要将CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha1
改成CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcell.sha
,否则安装时会重新下载,很重要!!
[root@DEV1]# mv CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha1 CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha
(5)启动
主节点
/opt/cm-5.15.0/etc/init.d/cloudera-scm-server start
主节点及其他节点
/opt/cm-5.15.0/etc/init.d/cloudera-scm-agent start
启动需要点时间,可以查看数据库scm中的HOSTS表,如果里面出现节点信息表示server启动完成
##安装hadoop集群:
安装的时候没有做截图,将我参考的文章的图片放在下边
1.登录主界面
登录主节点IP的7180端口,默认登录用户名和密码都是admin
2.选择安装版本
3.为CDH群集安装指定主机
4.集群安装
5.主机检查
第一个警告直接在所有节点上执行echo 10 > /proc/sys/vm/swappiness
第二个警告按照上面的说明,在所有节点上执行这两条命令
echo never >/sys/kernel/mm/transparent_hugepage/defrag >> /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled>> /etc/rc.local
6.集群设置
服务配置,保持默认就可以(Cloudera Manager会根据机器的配置自动进行配置)
数据库设置(这个位置我的HUE表一直连不上,按照网上的一些说法做了一些操作也没能解决,最终没办法,为了能成功安装完CDH,最终返回前边将hue去掉了)
审查更改(默认即可)
开始安装
此处hive ,oozie会安装失败,失败信息如下。因为我们使用了MySQL作为hive元数据存储,需要将mysql驱动拷贝到hive和oozie目录下。(所有节点)
cp /opt/cm-5.14.0/share/cmf/lib/mysql-connector-java-5.1.45-bin.jar /opt/cloudera/parcels/CDH-5.15.0-1.cdh5.15.0.p0.21/lib/hive/lib/
cp /opt/cm-5.15.0/share/cmf/lib/mysql-connector-java-5.1.45-bin.jar /var/lib/oozie/
安装完成
错误解决:
1、pstree: command not found
/opt/cm-5,15.0/etc/init.d/cloudera-scm-server start
/opt/cm-5.15.0/etc/init.d/cloudera-scm-server: line 109:pstree: command not found
Starting cloudera-scm-server: [FAILED]
/opt/cm-5.15.0/etc/init.d/cloudera-scm-agent start
/opt/cm-5.15.0/etc/init.d/cloudera-scm-agent: line 108:pstree: command not found
Starting cloudera-scm-agent: [FAILED]
因为系统是最小化安装,默认没有安装
解决方法
yum install psmisc -y
##中途安装失败,重新安装
关闭所有服务
主节点
[root@DEV1 opt]# /opt/cm-5.15.0/etc/init.d/cloudera-scm-server stop
主节点及其他节点
[root@DEV1 opt]# /opt/cm-5.15.0/etc/init.d/cloudera-scm-agent stop
删除agent uuid
rm -rf /opt/cm-5.15.0/lib/cloudera-scm-agent/*
删除数据库scm
重新配置数据库
/opt/cm-5.15.0/share/cmf/schema/scm_prepare_database.sh mysql -hlocalhost -uroot -p scm scm
启动Cloudera server和agent,按照之前步骤安装即可