CDH安装教程
本篇是刚进入公司安装CDH的记录,远程服务器3台,用Xshell6 工具连接
虚拟的环境准备
1、主机名设置(每一台服务器都设置:后面没有单独说明的每台都要进行配置):
hostnamectl set-hostname dsy0
vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=dsy0
cat /etc/sysconfig/network
2、网络配置:
vim /etc/hosts
cat /etc/hosts
3、禁用ipv6网络协议
没有安装 ipconfig模块,需要用户手动安装
yum -y install net-tools
禁用Ipv6(直接复制下方代码进行粘贴回车)
echo -e "
# 禁用整个系统所有接口的IPv6
net.ipv6.conf.all.disable_ipv6 = 1
# 禁用某一个指定接口的IPv6(eth0,lo)
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1
" >> /etc/sysctl.conf
重启sysctl:
sudo sysctl -p
4、关闭防火墙
查看防火墙的状态
systemctl status firewalld.service
安装iptables-services模块
yum -y install iptables-services
图片过长也没必要,就不截图了
关闭防火墙
service iptables stop
再次查看防火墙的状态
service iptables status
关闭防火墙,防止开机自启
systemctl stop firewalld.service
systemctl disable firewalld.service
5、同步时间
安装NTP模块
yum -y install ntp
设置开机自启
chkconfig ntpd on
查看ntp是否开机自启
systemctl is-enabled ntpd
设置 NTP 服务半个小时同步一次(时间自定)
echo '0,30 * * * * root ntpdate -u ntp.aliyun.com' >> /etc/crontab
cat /etc/crontab
查看时间是否准确
date
6、关闭SELINUX
setenforce 0
把 SELINUX=enforcing 改成 SELINUX=disable
vim /etc/selinux/config
重启服务器,虚拟机准备就结束了
reboot
准备Java环境
mkdir /usr/java
cd /usr/java/
下载 oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
现在这种方式下载不了,推荐一个地址
https://blog.youkuaiyun.com/LinBilin_/article/details/50217541
这个是orcal的账号,下载的话
https://www.oracle.com/java/technologies/oracle-java-archive-downloads.html
wget https://archive.cloudera.com/cm6/6.3.1/redhat7/yum/RPMS/x86_64/oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
解压 oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
创建软连接
ln -s /usr/java/jdk1.8.0_181-cloudera /usr/java/jdk1.8
删除 oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
rm -rf oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
产看软连接
配置环境变量
echo '
export JAVA_HOME=/usr/java/jdk1.8
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=${JAVA_HOME}/bin:${PATH}:${CLASSPATH}
' >> /etc/profile
查看是否更改成功
tail -n 10 /etc/profile
重新加载文件
source /etc/profile
验证是否配置成功
java -version
which java
安装MySQL(一个节点上进行安装)
先检验服务器上有没有残留的Mysql
1.查看Mysql的安装情况
rpm -qa|grep -i mysql
2.依次删除上述文件
rpm -ev mysql-community-release-el7-5.noarch --nodeps
rpm -ev mysql-community-common-5.6.50-2.el7.x86_64 --nodeps
rpm -ev mysql-community-libs-5.6.50-2.el7.x86_64 --nodeps
rpm -ev mysql-community-client-5.6.50-2.el7.x86_64 --nodeps
rpm -ev mysql-community-server-5.6.50-2.el7.x86_64 --nodeps
3.再次确认Mysql安装情况
rpm -qa|grep -i mysql
4.find命令查看Mysql相关文件并全部删除
find / -name mysql
5.再次检查有无Mysql残留文件
find / -name mysql
yum 设置阿里源 (阿里镜像MySQL下载快)
# 1. 备份原先的镜像文件
cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.backup
# 2. 下载阿里云的 CentOS-Base.repo 到 /etc/yum.repos.d/ 目录下
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 3. 清理 yum 软件源缓存
yum clean all
# 4. 生成新的 yum 元数据缓存
yum makecache
CDH官方安装文档:https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/cm_ig_mysql.html#cmig_topic_5_5
在安装的过程中可以自己选择,如果不懂就一路 yes ,安装过程中它本身就会自己进行相关的配置,然后启用用户密码登陆进入MySQL,使用MySQL数据库
update user set password=password("root") where user="root";
给root用户赋权,添加远程访问权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
FLUSH PRIVILEGES;
创建大数据集群所需要的数据库
CREATE DATABASE <database> DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON <database>.* TO '<user>'@'%' IDENTIFIED BY '<password>';
-- 创建 Cloudera Manager Server 用户和数据库
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE USER 'scm'@'%' IDENTIFIED BY 'scm';
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'scm';
-- 创建 Activity Monitor 用户和数据库
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE USER 'amon'@'%' IDENTIFIED BY 'amon';
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY 'amon';
-- 创建 Reports Manager 用户和数据库
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE USER 'rman'@'%' IDENTIFIED BY 'rman';
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'rman';
-- 创建 Hue 用户和数据库
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE USER 'hue'@'%' IDENTIFIED BY 'hue';
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'hue';
-- 创建 Hive 元数据 用户和数据库
CREATE DATABASE hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE USER 'hive'@'%' IDENTIFIED BY 'hive';
GRANT ALL ON hive.* TO 'hive'@'%' IDENTIFIED BY 'hive';
-- 创建 Sentry Server 用户和数据库
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE USER 'sentry'@'%' IDENTIFIED BY 'sentry';
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'sentry';
-- 创建 Cloudera Navigator Audit Server 用户和数据库
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE USER 'nav'@'%' IDENTIFIED BY 'nav';
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'nav';
-- 创建 Cloudera Navigator Metadata Server 用户和数据库
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE USER 'navms'@'%' IDENTIFIED BY 'navms';
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY 'navms';
-- 创建 Oozie 用户和数据库
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE USER 'oozie'@'%' IDENTIFIED BY 'oozie';
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie';
flush privileges;
停止MySQL重新启动MySQL
sudo systemctl stop mysqld
sudo systemctl start mysqld
配置本地Parcel仓库(主节点上其实这一步可以省略,但是Httpd还是要装的)
1、安装Apache HTTP Server,并且启动开机自启服务
yum -y install httpd
chkconfig httpd on
service httpd start
查看是否开机自启
systemctl is-enabled httpd.service
systemctl is-active httpd
查看httpd状态
service httpd status
在电脑浏览器上访问主节点的ip,访问的目录默认是/var/www/html/
下的文件也可以去改httpd.config 的文件存放路径,如果没有修改该路径,默认的路径是/var/www/html/
,修改默认文件存放路径修改这个文件/etc/httpd/conf/httpd.conf
将这个文件里的DocumentRoot,<Directory “/var/www/html”> 这些地方的路径都改掉;我是没又改的,接下来就是在/var/www/html/
目录下创建目录/var/www/html/Parcel/CDH
和/var/www/html/Parcel/CM
通过http://+ip地址+/Parcel可以访问到,如果需要通过主机名访问需要在电脑的C:\Windows\System32\drivers\etc\hosts
文件中配置!
mkdir /var/www/html/Parcel
mkdir /var/www/html/Parcel/CDH
mkdir /var/www/html/Parcel/CM
在mkdir /var/www/html/Parcel/CDH
目录下通过wget
+下载地址来下载,我用的是公司的资源CDH和CM,所以你们需要自己去找下载地址进行下载,下载完成后
通过Ip+Parcel进行访问
能访问到就ok了
安装 cloudera-manager-daemons
(1)创建 /opt/cloudera-manager 目录,用于存放 cdh的安装文件
mkdir /opt/cloudera-manager
将CM下的文件复制一份到/opt/cloudera-manager
安装 cloudera-manager-daemons
如果直接安装不成功,则使用 --nodeps --force 命令安装
--nodeps:安装时不检查依赖关系 --force:强制安装
rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
安装完之后,会在 /opt 下生成目录cloudera目录
安装 cloudera-manager-agent
cd /opt/cloudera-manager
rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm --nodeps
配置agent的server节点
修改 /etc/cloudera-scm-agent/config.ini 文件,将server_host=localhost 改成server_host=主机名(server节点的主机名我的就是dsy0,三台都一样)
vim /etc/cloudera-scm-agent/config.ini
head -n 20 /etc/cloudera-scm-agent/config.ini
主节点上安装 cloudera-manager-server
rpm -ivh cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
安装完server之后,主节点的cdh安装算完成了
安装路径都在
/opt/cloudera/cm
/opt/cloudera/agent
/etc/cloudera-scm-agent
/etc/cloudera-scm-server
下载的离线安装包parcel系统已经创建好目录了,我们直接移动到 /opt/parcel-repo 就可以了
为CM使用,安装MySQL连接驱动
#没有这个目录自己创建一个当然也可以自己定义存储位置
cd /home/resources/mysql/jdbc
# 下载连接驱动
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz
# 提取jar文件
tar zxvf mysql-connector-java-5.1.46.tar.gz
复制MySQL的驱动jar包到 /usr/share/java
目录下,若不存在 /usr/share/java
目录,则手动创建一个
cp mysql-connector-java-5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar
设置Cloudera Manager数据库
mysql跟主节点在一台服务器上使用下面,没在继续往下看
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm scm
期间遇到的问题
解决用root用户进入Mysql使用MySQL数据库
GRANT ALL ON scm.* TO 'scm'@'localhost' IDENTIFIED BY 'scm';
关于这个用户权限是%它是不包含localhost的%是远程访问,localhost是本地访问因为我的mysql是和server装在一个节点上的属于本地访问所以它就会报没有这个权限.
如果mysql 没有在主节点上
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h dsy1 --scm-host dsy0 scm scm scm
-h 安装了MySQL的服务器, --scm-host安装了server的服务器
然后就是启动CM
启动主节点上的server
systemctl start cloudera-scm-server
进入server log目录,查看日志,日志生产则代表服务已经正常启动成功
ll /var/log/cloudera-scm-server/
查看server状态
systemctl status cloudera-scm-server
查看 server 日志
tail -F /var/log/cloudera-scm-server/cloudera-scm-server.log
查看 agent 日志
tail -F /var/log/cloudera-scm-agent/cloudera-scm-agent.log
查看7182端口是否被占用
netstat -anp | grep 7180
所有节点启动agent
sudo systemctl start cloudera-scm-agent
sudo systemctl status cloudera-scm-agent
安装CDH服务
1、登录cdh安装界面
(1)浏览器访问 http://dsy0:7180
,进入cdh登录界面,默认账户密码 admin admin
一直就默认
全选,必须要三台服务都有,之前的步骤才正确,没有的去检查agent是否启动,主机名映射,agent的配置文件是否指向server节点。
这一步在有网的情况下默认就行了,没网的情况下就需要配置Parcel仓库,进行下面几步
我这是有网默认
等待安装CDH
点击这两处进行检查,检查完毕后,解决报告中的问题。若无法解决,直接选择第三项,“我理解风险,让我继续创建集群”,然后点击继续
选择要安装的服务,CDH安装基本上就结束了,后面服务的安装会出现很多的问题举几个特别的例子(由于是后面加上去的所以就没有图片了)
1.在测试数据库的时候出现
数据库拒绝访问,基本上是把服务安装到了有MySQL的服务器上会出现,所以需要加入本地访问的权限
GRANT ALL ON scm.* TO 'scm'@'localhost' IDENTIFIED BY 'scm';
GRANT ALL ON amon.* TO 'amon'@'localhost' IDENTIFIED BY 'amon';
GRANT ALL ON rman.* TO 'rman'@'localhost' IDENTIFIED BY 'rman';
GRANT ALL ON hue.* TO 'hue'@'localhost' IDENTIFIED BY 'hue';
GRANT ALL ON hive.* TO 'hive'@'localhost' IDENTIFIED BY 'hive';
GRANT ALL ON sentry.* TO 'sentry'@'localhost' IDENTIFIED BY 'sentry';
GRANT ALL ON nav.* TO 'nav'@'localhost' IDENTIFIED BY 'nav';
GRANT ALL ON navms.* TO 'navms'@'localhost' IDENTIFIED BY 'navms';
GRANT ALL ON oozie.* TO 'oozie'@'localhost' IDENTIFIED BY 'oozie';
flush privileges;
然后测试连接,我重装了好几遍,可能还在不行,但是有时候就可以了,于是我通过
mysql -uhive -phive
是可以访问到的但是通过
mysql -h172.18.25.241 -uhive -phive
or
mysql -hdsy1 -uhive -phive
访问报错是和日志cloudera-scm-server.log中的错误是一样的所以我又加了dsy1的访问权限
GRANT ALL ON scm.* TO 'scm'@'dsy1' IDENTIFIED BY 'scm';
GRANT ALL ON amon.* TO 'amon'@'dsy1' IDENTIFIED BY 'amon';
GRANT ALL ON rman.* TO 'rman'@'dsy1' IDENTIFIED BY 'rman';
GRANT ALL ON hue.* TO 'hue'@'dsy1' IDENTIFIED BY 'hue';
GRANT ALL ON hive.* TO 'hive'@'dsy1' IDENTIFIED BY 'hive';
GRANT ALL ON sentry.* TO 'sentry'@'dsy1' IDENTIFIED BY 'sentry';
GRANT ALL ON nav.* TO 'nav'@'dsy1' IDENTIFIED BY 'nav';
GRANT ALL ON navms.* TO 'navms'@'dsy1' IDENTIFIED BY 'navms';
GRANT ALL ON oozie.* TO 'oozie'@'dsy1' IDENTIFIED BY 'oozie';
flush privileges;
再次测试发现就成功了,在这里localhost可能只是mysql里面的默认而去验证数据库是采用ip地址的方式去验证所以找不到
2.就是关于HUE这个服务它会报
无法验证连接
我去看了cloudera-scm-server.log,发现它一般会少几个依赖
日志中他报少了 一个什么我记不清了 和 MySQL-python
于是我就安装了
yum -y install MySQL-python
还有一个报错我记得的话是 .......so.18
是它在安装MySQL的时候缺少了文件详情如下

解决办法
原因:依赖Apache的安装包
解决办法:package-cleanup --cleandupes
package-cleanup : 用于清理本地安装的RPM软件包
然后再 yum install openssh
这里会报-bash: package-cleanup: 未找到命令
以后遇到可以这样去找需要安装什么
yum provides */package-cleanup

yum install yum-utils -y
下面是启动的时候出现的错误,需要安装的依赖
yum -y install httpd (之前我是只在server服务器上安装)
在启动的时候如果是第一次安装不会有什么错误,如果是卸载又装会出现的错误(卸载的话别自己乱卸载,强烈建议去按照官方文档卸载)
https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/cm_ig_uninstall_cm.html#cmig_topic_18_1_3
NameNode格式化失败,或者DataNode格式化失败,手动的去删除nn,dn,snn一般默认是在/dfs 下面,去把它里面的内容清空,每一台服务器都需要
kafka启动,卸载重装才会出现的错误,去kafka 的服务器上看他的id是多少
去对应的服务器上更改与其对应,配置文件一般是在
改为与之对应的,还有一个坑,就是当时我在安装HUE的时候出现很多的错于是我就后面去添加服务,启动的时候报了缺少HDFS依赖,瞎搞了半天,最后才发现问题所在的原因是添加服务的第一步,选择依赖没有选上,就报了这个错误,基本上我遇到的就这么多,如果你们安装遇到新的问题欢迎留言,但一定要把问题说清楚,谢谢!