基于centos7 安装6.2版本CM以及CDH
- CM安装包下载地址:
rpm包:https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPMS/x86_64/
allkeys.asc文件:https://archive.cloudera.com/cm6/6.2.0/allkeys.asc - CDH安装包下载地址:https://archive.cloudera.com/cdh6/6.2.0/parcels/
以下操作主要是在root用户下进行》》》
-
修改hostname(每个节点)
1.1 临时修改
$ hostname hdfs1
1.2 长期修改
$ vi /etc/hostname
-
配置 /etc/hosts(每个节点)
192.168.101.1 hdfs1
192.168.101.2 hdfs2
192.168.101.3 hdfs3
192.168.101.4 hdfs4
192.168.101.5 hdfs5
其中选择hdfs1作为主节点
- 关闭防火墙、禁止防火墙开机自启(每个节点)
$ systemctl stop firewalld #关闭防火墙
$ systemctl disable firewalld #禁止防火墙开机自启
$ vi /etc/selinux/config #SELINUX=disabled (修改)
-
配置ssh免密登录(可以不用配置)
~登录各节点执行ssh-keygen -t rsa 一路回车到结束,在/root/.ssh/下面会生成一个公钥文件id_rsa.pub
cat /home/root/.ssh/id_rsa.pub >> /home/root/.ssh/authorized_keys 将公钥追加到authorized_keys
$ chmod 600 /home/root/.ssh/authorized_keys 修改权限
将/home/root/.ssh/authorized_keys从当前节点分发到其他各个节点。如:scp /home/root/.ssh/authorized_keys root@hdfs1:/home/root/.ssh/~ -
配置NTP服务(所有节点)
修改时区(改为中国标准时区)
$ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
安装ntp$ yum -y install ntp
配置ntp主机服务器,注释掉其他ntp服务器
$ vim /etc/ntp.conf
server hdfs1
重新启动 ntp服务:$ service ntpd restart
设置开机自启:$ systemctl enable ntpd.service
ntpdc -c loopinfo #查看与时间同步服务器的时间偏差
ntpq -p #查看当前同步的时间服务器
ntpstat #查看状态
-
修改Linux swappiness参数(所有节点)
为了避免服务器使用swap功能而影响服务器性能,一般都会把vm.swappiness修改为0(cloudera建议10以下)
$ cd /usr/lib/tuned/
$ grep "vm.swappiness" * -R
#查询出后依次修改 -
禁用透明页(所有节点)
在/etc/rc.local 添加命令:
$ echo never > /sys/kernel/mm/transparent_hugepage/defrag
$ echo never > /sys/kernel/mm/transparent_hugepage/enabled
添加可执行权限:chmod +x /etc/rc.d/rc.local -
JDK安装(所有节点)
$ rpm -qa | grep java
# 查询已安装的java
$ yum remove java*
# 卸载
$ rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
$ vi /etc/profile
#末尾添加
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera/
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
$ source /etc/profile
$ java -version
#验证安装是否成功
-
创建/usr/share/java目录,将mysql-jdbc包放进去(所有节点)
$ mkdir -p /usr/share/java
$ mv /opt/mysql-j/mysql-connector-java-5.1.34.jar /usr/share/java/
注意:mysql-connector-java-5.1.34.jar 一定要命名为mysql-connector-java.jar -
Mysql安装(选择一个节点)
-
卸载旧的mysql(如有)以及mariadb:rpm -qa|grep mariadb
$ rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
-
解压mysql安装包并进行安装:
$ tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
$ rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-libs-compat-5.7.26-1.el7.x86_64.rpm
- MYSQL配置:
$ mysqld --initialize --user=mysql # 初始化mysql使mysql目录的拥有者为mysql用户
$ cat /var/log/mysqld.log # 最后一行会有随机生成的密码
$ systemctl start mysqld.service # 设置mysql服务自启
$ mysql -uroot –ppwd
登录进去后,ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.需要修改访问密码:
ALTER USER USER() IDENTIFIED BY ‘rootpwd’;
如果是5.7之前版本,可以使用如下方式: SET PASSWORD = PASSWORD(‘rootpwd’);
如果不能登陆,设置免密登录并重启mysql服务:
vi /etc/my.cnf
#在[mysqld]的段中加上一句:skip-grant-tables ,
然后重启mysql: systemctl restart mysqld
-
创建库(后续安装服务等使用)
create database metastore default charset utf8 collate utf8_general_ci; create database amon default charset utf8 collate utf8_general_ci; create database rman default charset utf8 collate utf8_general_ci; create database hue default charset utf8 collate utf8_general_ci; create database oozie default charset utf8 collate utf8_general_ci; grant all on metastore.* to 'metastore'@'%' identified by 'metastore'; grant all on amon.* to 'amon'@'%' identified by 'amon'; grant all on rman.* to 'rman'@'%' identified by 'rman'; grant all on hue.* to 'hue'@'%' identified by 'hue'; grant all on oozie.* to 'oozie'@'%' identified by 'oozie';
权限回收:revoke all privileges,grant option from ‘root’@’%’;
- 安装Httpd服务(hdfs1节点)
$ yum install httpd
$ service httpd start
$ systemctl enable httpd.service 设置httpd服务开机自启
$ ps -ef | grep httpd 查看httpd服务是否启动
- 配置Cloudera Manager包yum源(hdfs1节点)
-
配置Web服务器
$ mkdir -p /var/www/html/cloudera-repos/cdh6.2
把 CDH 6.2 的三个文件放到该目录下,注意把sha256后缀的文件名修改为sha
$ mkdir -p /var/www/html/cloudera-repos/cm6.2
将Cloudera Manager安装需要的5个rpm包,asc文件以及jdk文件下载到本地,放在同一目录,执行createrepo命令生成rpm元数据。$ cd /var/www/html/cloudera-repos/cm6.2 $ yum install createrepo $ createrepo .#(注意此命令的最后带一个点) 最终 cm6.2目录下多了一个repodata目录
-
- 修改 /etc/httpd/conf/httpd.conf 配置文件,在IfModule mime_module中修改以下内容: 把AddType application/x-gzip .gz .tgz 修改为 AddType application/x-gzip .gz .tgz .parcel
- 重启httpd服务
systemctl restart httpd
,并在浏览器访问:
http://hdfs1/cloudera-repos/
- 制作Cloudera Manager的repo源(agent节点)
- $ vi /etc/yum.repos.d/cloudera-manager.repo
name=ClouderaManager baseurl=http://hdfs1/cloudera-repos/cm6.2 enabled=1 # 或者enable=true gpgcheck=0 # 或者gpgcheck=false
- 更新yum源
$ yum clean all $ yum makecache $ yum repolist
- 重启httpd服务
$ systemctl restart httpd
-
安装Cloudera Manager Server(hdfs1)
-
安装CM6.2时,没安装jdk的要在各节点先安装官方提供的JDK:oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
- 第一种方式:因为已经配置好repo仓库所以yum时会到hdfs1/cm6.2目录下找到oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm进行安装
$ yum -y install oracle-j2sdk1.8-1.8.0+update181-1.x86_64
默认安装在 /usr/java/jdk1.8.0_181-cloudera$ vim /etc/profile
文件中添加如下内容export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera export CLASSPATH=.:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH
重新加载profile配置文件,让配置文件生效:
$ source /etc/profile
检查是否已配置好新的JDK:$ java -version
然后scp到其他节点.- 第二种方式
直接使用 rpm -ivh 命令安装 rpm 文件的方式
$ rpm -ivh /var/www/html/cm6.2/oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
-
通过yum安装Cloudera Manager Server:(Cloudera Manager Server的源 已经配置到了repo库中)
$ yum -y install cloudera-manager-server cloudera-manager-agent
最后一行显示 Complete!安装完CM后/opt/ 下会出现cloudera目录
$ mv /opt/parcels/* /opt/cloudera/parcel-repo
# 将parcel包移动到指定位置 -
初始化数据库,格式:/opt/cloudera/cm/schema/scm_prepare_database.sh mysql cm cm password
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql -hmysql_host -uroot -p'root' --scm-host hdfs1 cm cm_user cm_pwd
注意:如果cm库已经存在,会报错,需要删除
执行成功最后一行显示 All done, your SCM database is configured correctly!
必须保证/usr/share/java目录中已经存在 mysql-connector-java.jar 的软连接:ln -s mysql-connector-java-5.1.46.jar mysql-connector-java.jar -
启动Cloudera Manager Server
$ systemctl start cloudera-scm-server $ ps -ef | grep cloudera-scm-server #查看是否启动 $ systemctl status cloudera-scm-server #显示 Active: active (running)
- 检查端口是否监听
$ yum install net-tools #安装 netstat $ netstat -lnpt | grep 7180 #要等一段时间启动完全启动成功后,才能看到端口被使用,然后才能真正访问到CM的登录网页 tcp 0 0 0.0.0.0:7180 0.0.0.0:* LISTEN 68289/java
- 通过 hdfs1:7180/cmf/login 访问 CM,之后相关组件可在页面进行安装了
-
-
遇到的问题:
- 在部署agent时出现错误:
MainThread agent ERROR Failed to connect to previous supervisor.
这时候要确认一下:hostname 和ip是否对应 (/etc/sysconfig/network 和 /etc/hosts )
(hostname 临时修改方法: hostname master)
如果对的话,还存在问题,那么尝试用这种方法(杀掉进程):
kill -9 $(pgrep -f supervisord) 然后重启agent即可。 - 如果在界面安装部署agent过程出现中断导致无法继续安装:
需要kill掉agent节点两个进程:
kill -9 ${pgrep -f 'cloudera-scm-agent/events'}
kill -9 $(pgrep -f supervisord)