Cloudera Manager安装以及使用CM安装具体组件的安装教程

由于第一版本使用admin用户安装,但是发现admin安装之后各种目录权限异常问题,重新编写文档采用root用户安装

第一步:初始化机器

首先得在新的主机环境中安装JDK,关闭防火墙、修改selinux、NTP时钟与主机同步、修改hosts、与主机配置ssh免密码登录、保证安装好了perl和Python。

注意:一定要使用root账号安装,否则后面的问题十有八九都是目录权限等问题

1. CDH要求使用IPv4, IPv6不支持, 因此需要禁用IPv6(阿里云的机器默认禁用了IPv6, 可跳过)

2.修改机器名称

-   修改机器名称

```
$ hostnamectl set-hostname bd-cdh-namenode
```

3.修改host

$ sed '$d' /etc/hosts >> hosts
$ mv hosts /etc/hosts
$ echo  -e "10.xxx.xxx.1 bd-cdh-namenode \n10.xxx.xxx.2 bd-cdh-datanode1 \n10.xxx.xxx.3 bd-cdh-datanode2 " >> /etc/hosts

4.各台机器之间两两可以无密SSH(即彼此授信, 注意是使用内部ip进行授信通信的)

-   初始化ssh

$ ssh-keygen -t rsa
$ cp .ssh/id_rsa.pub .ssh/authorized_keys 
$ echo -e "Host bd-cdh-namenode \n  HostName bd-cdh-namenode \n  User root \nHost bd-cdh-datanode1 \n  HostName bd-cdh-datanode1 \n  User root \nHost bd-cdh-datanode2 \n  HostName bd-cdh-datanode2 \n  User root" >> .ssh/config


-   ssh互信

需要到每台机器上执行:

$ ssh-copy-id -i ~/.ssh/id_rsa.pub bd-cdh-namenode
$ ssh-copy-id -i ~/.ssh/id_rsa.pub bd-cdh-datanode1
$ ssh-copy-id -i ~/.ssh/id_rsa.pub bd-cdh-datanode2

4. 安装jdk, 选择oracle官方版本, 解压安装到/usr/local, 并在/etc/profile中设置JAVA_HOME及PATH

$ wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u112-b15/jdk-8u112-linux-x64.tar.gz
$ tar zxf jdk-8u112-linux-x64.tar.gz && rm -rf jdk-8u112-linux-x64.tar.gz
$ mv jdk1.8.0_112 /usr/local/jdk

$ echo -e 'export JAVA_HOME=/usr/local/jdk \nexport PATH=/usr/local/jdk/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin' >> /etc/profile
$ source /etc/profile

5. ntp服务,阿里云已经安装可以跳过

如果有外网: $ crontab -e

加入一行:
*/1 * * * * ntpdate time1.aliyun.com

如果需要配置ntp服务器:

所有节点配置NTP服务 (这一步暂时可以跳过,但是在集群启动以后,会提示时间不同步)

集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。 具体思路如下:

  • master节点作为ntp服务器与外界对时中心同步时间,随后对所有datanode节点提供时间同步服务。
  • 所有datanode节点以master节点为基础同步时间。

所有节点安装相关组件:

$ yum install ntp
$ chkconfig ntpd on

检查是否设置成功:

$ chkconfig --list ntpd #其中2-5为on状态就代表成功。 

可以通过以下命令先进行时间同步:

ntpdate time1.aliyun.com

主节点配置(master节点)

vi /etc/ntp.conf 

ntp服务只有一个配置文件,配置好了就OK。 这里只给出有用的配置,不需要的配置都用#注掉,这里就不在给出(大部分把#去掉即可,不需要添加):

driftfile /var/lib/ntp/drift
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
# Permit all access over the loopback interface.  This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1
restrict -6 ::1
# Hosts on local network are less restricted.
restrict 192.168.3.0 mask 255.255.255.0 nomodify notrap
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server time1.aliyun.com iburst
server time2.aliyun.com iburst
server time3.aliyun.com iburst
server time4.aliyun.com iburst

配置文件完成,保存退出,启动服务,执行如下命令:

service ntpd start 

检查是否成功,用ntpstat命令查看同步状态,出现以下状态代表启动成功:

synchronisedto NTP server () at stratum 2time correct towithin74 mspolling server every 128 s

如果出现异常请等待几分钟,一般等待5-10分钟才能同步。

在其他节点,直接运行

$ ntpdate -u node1 

(主节点ntp服务器) 即可,和node1同步

这里可能出现同步失败的情况,请不要着急,一般是本地的ntp服务器还没有正常启动,一般需要等待5-10分钟才可以正常同步。

启动服务:

service ntpd start 

因为是连接内网,这次启动等待的时间会比master节点快一些,但是也需要耐心等待一会儿。

6. 关闭防火墙

阿里云的机器默认已经做了这个, 可跳过

$ setenforce 0
$ vim /etc/sysconfig/selinux #修改SELINUX=disabled

#清空iptables
$ iptables -F

7. 挂载硬盘

一般我们购买机器的时候都会除了系统盘意外,再购买额外的磁盘空间。 这些额外的磁盘空间我们会挂载到 /var 目录下(var目录我们一般存放数据和日志)

首先我们通过fdisk -l命令查看磁盘名称

image

这里我们可以看到系统已经使用一块磁盘叫做 /dev/xvda1,下面有一块磁盘叫做 /dev/xvdb, 这个就是我们要挂载的磁盘。

然后执行下面命令:

#格式化
$ mkfs.ext3 /dev/xvdb
#备份var
$ cp -r /var /var.bak
#将硬盘挂载到目录/var下,注意内容会全部消失
$ mount /dev/xvdb /var
#恢复
$ cp -r /var.bak/* /var/
#查看挂载结果
$ df -h
#开机挂载
$ echo "/dev/xvdb /var ext3 defaults 1 2" >> /etc/fstab

8. 由于centos7开始没有办法通过yum安装mysql,所以需要添加mysql官方源

  • 添加mysql官方源并安装
$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
$ rpm -ivh mysql-community-release-el7-5.noarch.rpm 
$ yum install -y mysql mysql-devel mysql-server mysql-libs
  • 配置mysqld
$ chkconfig mysqld on
$ service mysqld start
$ /usr/bin/mysql_secure_installation    
  • 建立数据库
# 连接mysql
$ mysql -u root -p

#hive

$ create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

#activity monitor

$ create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#activity oozie 如果需要的话

$ create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

9.离线安装(由于在线安装速度太慢) 安装包Cloudera Manager Server 和Agent

http://archive.cloudera.com/cm5/cm/5/ 中下载 cloudera-manager-centos7-cm5.7.1x8664.tar.gz 用来安装 cloudera-manager http://archive.cloudera.com/cm5/cm/5/cloudera-manager-centos7-cm5.7.1x8664.tar.gz

CDH 离线安装包 https://archive.cloudera.com/cdh5/parcels/5.7.1/ 中下载

CDH-5.7.1-1.cdh5.7.1.p0.11-el7.parcel
CDH-5.7.1-1.cdh5.7.1.p0.11-el7.parcel.sha1
manifest.json

注意el7就是centos7 el6是centos6需要注意区分

cloudera manager的目录默认位置在/opt下,解压:

tar xzvf cloudera-manager*.tar.gz

将解压后的cm-5.7.1和cloudera目录放到/opt目录下。

$ tar zxvf cloudera-manager-centos7-cm5.7.1_x86_64.tar.gz
$ mv cm-5.7.1/ /opt/
$ mv cloudera/ /opt/

将mysql jar 放到 /opt/cm-5.7.1/share/cmf/lib/

$ yum install -y mysql-connector-java
$ cp /usr/share/java/mysql-connector-java.jar /opt/cm-5.7.1/share/cmf/lib/

将CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中(parcel-repo需要手动创建)。

相关的文件如下:

CDH-5.7.1-1.cdh5.7.1.p0.11-el7.parcel
CDH-5.7.1-1.cdh5.7.1.p0.11-el7.parcel.sha1
manifest.json

将CDH-5.7.1-1.cdh5.7.1.p0.11-el7.parcel.sha1 重命名为 CDH-5.7.1-1.cdh5.7.1.p0.11-el7.parcel.sha

$ mv CDH-5.7.1-1.cdh5.7.1.p0.11-el7.parcel.sha1 CDH-5.7.1-1.cdh5.7.1.p0.11-el7.parcel.sha

$ mv CDH-5.7.1-1.cdh5.7.1.p0.11-el7.parcel* /opt/cloudera/parcel-repo/
$ mv manifest.json /opt/cloudera/parcel-repo/

10.准备 Cloudera repo 镜像

安装httpd服务,安装之后启动服务,然后将准备好的repo文件考入/var/www/html 目录下

$ yum install -y httpd
$ service httpd start
$ chkconfig httpd on
$ cd /var/www/
$ cp -r ~/html/* ./html/

也可以自行组装目录

http://archive.cloudera.com/cm5 下载

installer/5.7.1/cloudera-manager-installer.bin
redhat/7/5/ 下面的所有

然后组织成一下目录

然后测试一下

$ curl http://bd-cdh-namenode/cm5/redhat/7/x86_64/cm/RPM-GPG-KEY-cloudera

第二步:正式开始安装

1.cloudera-manager 安装

$ chmod u+x cloudera-manager-installer.bin
$ ./*.bin #启动脚本

身下的一路点击next就行了,第一遍的安装会失败告终,这个时候需要修改cloudera repo

vi /etc/yum.repos.d/cloudera-manager.repo

baseurl = http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5/
gpgkey = http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/RPM-GPG-KEY-cloudera

变为

baseurl=http://repo机器地址/cm5/redhat/7/x86_64/cm/5/
gpgkey = http://repo机器地址/cm5/redhat/7/x86_64/cm/RPM-GPG-KEY-cloudera

或者直接将 archive.cloudera.com 映射到 repo机器的地址

然后再次安装

安装成功:

如果出现安装成功之后原先的SSH key 都会失效

这个坑能郁闷死我

  • 修改StrictModes

    编辑

    vi /etc/ssh/sshd_config

    找到

    StrictModes yes

    改成

    StrictModes no

    重启sshd服务

    $ service sshd restart

2.更换数据库

$ cp /usr/share/java/mysql-connector-java.jar /usr/share/cmf/lib/
$ /usr/share/cmf/schema/scm_prepare_database.sh mysql cm -hbd-cdh-namenode -uroot -panywhere --scm-host bd-cdh-namenode scm scm scm
$ 删除 /etc/cloudera-scm-server/db.mgmt.properties
$ service cloudera-scm-server restart 
$ service cloudera-scm-agent restart 

3.CDH 安装

这时可以通过浏览器访问主节点的7180端口测试一下了(由于CM Server的启动需要花点时间,这里可能要等待一会才能访问),默认的用户名和密码均为admin:

访问http://安装机器的ip:7180/

  • 选择许可条件

  • 选择版本

  • 输入集群机器

  • 搜索成功

  • 选择Parcel安装,并且选择CDH版本

  • 输入本地源

就是按照如图将repo源进行修改,改成本地:

  • 选择安装jdk

注意:这个地方一定要安装JDK,否则系统识别不了(这个地方被坑大了!)

  • Parcel 安装进度

  • 主机状态监测

注意:已启用透明大页面压缩,可能会导致重大性能问题。请运行“echo never > /sys/kernel/mm/transparent_hugepage/defrag”以禁用此设置,然后将同一命令添加到 /etc/rc.local 等初始脚本中,以便在系统重启时予以设置。以下主机将受到影响

j

/etc/rc.local 写入 if test -f /sys/kernel/mm/transparenthugepage/enabled; then
echo never > /sys/kernel/mm/transparent
hugepage/enabled
fi
if test -f /sys/kernel/mm/transparenthugepage/defrag; then
echo never > /sys/kernel/mm/transparent
hugepage/defrag
fi
重新检测:

Cloudera 建议将 /proc/sys/vm/swappiness 设置为最大值 10。当前设置为 60。
使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf, 以在重启后保存该设置。您可以继续进行安装, 但 Cloudera Manager 可能会报告您的主机由于交换而运行状况不良。以下主机将受到影响:

  • CM服务安装成功

  • 选择服务

这里选择想要安装的服务

注意: Spark 安装一定要选择上面的JDK
Kafka安装一定要下载kafka的Parcel 否则会失败

  • 服务的具体配置

服务选择:

总体服务

  • 数据库配置

hive oozie 数据库:

  • 安装成功

  • 进入主界面