在线和离线安装Cloudera CDH 5.6.0

时间:2021-05-14 18:19:25

在线和离线安装Cloudera CDH 5.6.0

1. 介绍

在实验室安装过社区版的Hadoop,当时用的是普通PC机,安装的过程遇到了好多问题。当解决了大部分的安装问题之后由于实验室的需求,需要安装一个商业发行版的Hadoop ,我们就采用的Cloudera 公司发行的版本。首先要说明的是CDH对内存要求比较高,当我们采用原来的4G内存的PC机,只要启动基本内存就满了,并且会拖慢整个集群的运算速度。所以说安装CDH对硬件的要求比较高。安装CDH 有三种安装方式:在线安装、半离线安装、离线安装。在线安装和离线安装我都安装过,虽然在线安装貌似简单但是实际用起来还是没有离线安装方便,我还是建议大家采用离线安装的方式。不过下面都会介绍在线安装的方式和离线安装的方式。希望对别人有所帮助。

2.0 硬件基础:

64G内存和4TSATA硬盘的服务器两台,一台32G内存的工作站
操作系统为Ubuntu14.04LTS系统,一个master节点带2 个slave节点

3. 准备工作:系统环境配置

以下操作皆在root用户下操作 没有注明仅在主节点操作时,在所有节点都要执行

3.1 安装Ubuntu14.04系统

在线安装时,注意在分区时一定要把硬盘空间主要分到/根节点下,因为采用Cloudera Manger 的在线安装方式,是把所有的软件安装在根节点下面。

3.2 设置hosts

root@master: vi /etc/hosts

192.168.1.10    mster
192.168.1.11 slave1
192.168.1.12 slave2
192.168.1.13 slave3

3.3 关闭防火墙

root@master:ufw disable

3.4 设置静态IP

root@master:sudo vi /etc/network/interfaces
添加如下

auto eth0
iface eth0 inet static
address 192.168.0.117
gateway 192.168.0.1 #
netmask 255.255.255.0

3.5 安装Oracle JDK 7(所有节点)

CDH要求至少是Oracle JDK7Ubuntu自带的是OpenJDK,而Ubuntu没有自带的Oracle JDK,需要添加PPP源,添加 PPA repository 到系统

root@master:add-apt-repository ppa:webupd8team/java
root@master:apt-get update
root@master:sudo apt-get upgrade
root@master:apt-get install oracle-java7-installer
root@master:apt-get install oracle-java7-set-default
root@master:java -version

3.6 所有节点免密码SSH登陆

使用ssh-keygen 和ssh-copy-id 实现SSH无密码登陆

  1. 在各个节点使用产生公钥私钥对
    bigdata@master:ssh-keygen -t rsa -P
  2. 将各个节点上公钥复制到主节点
    bigdata@slave1:ssh-copy-id -i ~/.ssh/id_rsa.pub master
  3. 查看各个节点的公钥是否追加到了主节点上
    bigdata@master:cat ~/.ssh/authorized_keys
  4. 把主节点上的authorized_keys文件发送到各个节点实现无密码登陆
    bigdata@master:scp ~/.ssh/authorized_keys bigdata@slave1:/home/bigdata/.ssh/
  5. 修改ssh配置文件使能够在root用户也能免密码采用(所有节点)不然后面安装会报错
    root@master:vi /etc/ssh/sshd_config
    找到PermitRootlogin 一行把后面修改成yes
  6. 重启ssh
    root@master:/etc/init.d/ssh restart或者service ssh restart
  7. 注意查看ssh是否启动成功

3.7 建立数据库(仅主机)

数据库用来存储Cloudera Manager 的配置信息和集群状况和任务进程的信息,用来管理整个集群。所以采用最方便的MySQL

  1. 安装MySQL:
    root@master:apt-get install mysql-server

  2. 安装MySQL JDBC驱动
    root@master:apt-get install libmysql-java

  3. 创建后继安装的需要的数据库,不过目前这一环节可以放在后面使用数据库是再建立,下面给出创建后面需要的数据库的例子:

        root@master:mysql -u root -p
## Cloudera manager db user, database and grant
mysql> create user 'cmf'@'%' identified by 'xyz';
mysql> create database cmf DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> grant all privileges on cmf.* to 'cmf'@'%' identified by 'xyz';
## For activity monitor
mysql> create user 'amon'@'%' identified by 'xyz';
mysql> create database amon DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> grant all privileges on amon.* to 'amon'@'%' identified by 'xyz';
## Hive Meta store
mysql> create user 'hive'@'%' identified by 'xyz';

mysql> create database metastore DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

mysql> grant all privileges on metastore.* to 'hive'@'%' identified by 'xyz';
## Flush all changes
mysql> FLUSH PRIVILEGES;

3.8 设置集群时间同步(所有节点)

root@mater: apt-get install ntp

3.9 修改linux swap空间的swappiness

Cloudera 建议将 /proc/sys/vm/swappiness 设置为 0。
修改swappiness的值为零:

root@master:cat /proc/sys/vm/swappiness
root@master:sysctl vm.swappiness=0
root@master:echo 0 > /proc/sys/vm/swappiness

4. 离线安装CDH

4.1 相关软件和下载

Cloudera Manager : http://archive.cloudera.com/cm5/cm/5/
Cloudera CDH:http://archive.cloudera.com/cdh5
MySql的JDBC驱动jar包
根据系统下载所响应的版本,下载的文件如下

cloudera-manager-trusty-cm5.6.0_amd64.tar.gz
CDH-5.6.0-1.cdh5.6.0.p0.45-trusty.parcel
CDH-5.6.0-1.cdh5.6.0.p0.45-trusty.parcel.sha
manifest.json
mysql-connector-java-5.1.38-bin.jar

4.2 解压 cloudera-manager-trusty-cm5.6.0_amd64.tar.gz 到 /opt 目录下

tar -xcvf cloudera-manager-trusty-cm5.6.0_amd64.tar.gz /opt

4.3 添加mysql connector包

mv mysql-connector-java-5.1.38-bin.jar /opt/cm-5.6.0/share/cmf/lib

4.4 创建用户(所有节点)

创建cloudera-scm用户
useradd --system --home=/opt/cm-5.6.0/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

4.5 初始化CM5的数据库数据库(仅主节点)

/opt/cm-5.6.0/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -p123456 --scm-host localhost scm scm

4.6 Agent 配置

/opt/cm-5.6.0/etc/cloudera-scm-agent/config.ini中的server_host为主节点的主机名
vi /opt/cm-5.6.0/etc/cloudera-scm-agent/config.ini

4.7 Parcels离线包设置(仅主节点)

将下载好的CDH-5.6.0-1.cdh5.6.0.p0.45-trusty.parcel
CDH-5.6.0-1.cdh5.6.0.p0.45-trusty.parcel.sha
manifest.json
文件移至/opt/cloudera/parcel-repo/中,没有这个目录的话,手动创建。

4.8 启动Cloudera Manager

主节点
/opt/cm-5.6.0/etc/init.d/cloudera-scm-server start
/opt/cm-5.6.0/etc/init.d/cloudera-scm-agent start
从节点
/opt/cm-5.6.0/etc/init.d/cloudera-scm-agent start
注:查看安装目录下log文件夹下cloudera-scm-agent/cloudera-scm-agent.out 看Agent 是否启动成功 。
当cloudera-scm-server、cloudera-scm-agent start启动成功之后,可通过http://主节点IP:7180来访问CM,用户名密码都为admin。剩下的就是一直点下一步和根据具体的需求来配置集群了。

5 添加节点

集群添加节点较为容易,只需要在待添加的主机上安装Cloudera Manager 上的Agent,然后在Cloudera Manager web 界面上向集群添加主机。

5.1 重复 第三步 准备工作:系统环境配置,仅在主机的上操作跳过

5.2 启动Cloudera Manager 客户端

重复4.2、4.4 和4.6步之后:
/opt/cm-5.6.0/etc/init.d/cloudera-scm-agent start

5.3 在web 端添加主机

  1. 由于已经将cm agent拷贝到各机器并启动了,此处不是通过IP或hostname查找的(即使查出来也无法选择),而是已存在的主机里面选择,选择新加的agent,点继续
  2. 出现下载parcel的界面(离线安装的方式parce包不需要下载)
  3. 检查主机正确性
  4. 选择主机模板-此处可选择要安装的组件
    5.向集群中添加主机
    6.启动

当集群出现错误时,试了各种办法还是不能解决时,可以多次重启机器。自己屡次成功。

6 在线安装Cloudera CDH

6.1 将CDH5的软件源添加到Apt中(所有节点)

         root@master: curl "http://archive.cloudera.com/cm5/ubuntu/trusty/amd64/cm/cloudera.list" -o /etc/apt/sources.list.d/cloudera_trusty.list
root@master: curl -s http://archive.cloudera.com/cdh5/ubuntu/trusty/amd64/cdh/archive.key | sudo apt-key add -
root@master: apt-get update

6.2 安装Cloudera Manager(所有节点)

root@mater:~# apt-get install cloudera-manager-daemons cloudera-manager-server

6.3 修改Cloudera-Manager-Server的配置文件

修改Cloudera-Manager-Server的配置文件db.properties,设置刚才我们在Mysql中创建的cmf数据库、用户名、密码
     root@master:vi /etc/cloudera-scm-server/db.properties 
#使用mysql 来管理cloudera-manager
com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=master
com.cloudera.cmf.db.name=cmf
com.cloudera.cmf.db.user=cmf
com.cloudera.cmf.db.password=xyz

6.4 设置集群时间同步(所有节点)

root@mater: apt-get install ntp

6.5 主节点启动Cloudera Manager Server

    root@mater:~# service cloudera-scm-server start 
Starting cloudera-scm-server: * cloudera-scm-server started
查看Cloudera manager的启动日志,看是否启动成功

tailf -100 /var/log/cloudera-scm-server/cloudera-scm-server.log

6.6 从节点启动Cloudera Manager Client

root@master:service cloudera-scm-agent start

查看cloudera agent的启动日志,

6.7 通过Web方式继续安装

6.7.1创建update-alternatives工具在/usr/sbin/下创建软链

root@m1:~# sudo ln -s /usr/bin/update-alternatives /usr/sbin/update-alternatives

6.7.2 打开浏览器,输入 http://master:7180/ 开始安装

初始账号和密码都是admin

6.7.3 选择安装的CDH版本

安装Cloudera Express版本

6.7.4 为CDH安装指定主机

选择IP进行搜索就行

6.7.5 选择安装方式

选择方法采用Pacrcel方式
选择安装Agent为cloudera Manager Server 的匹配发行版

6.7.6 指定主机的SSH登录方式

通过root用户,采用密码方式密码设为bigdata

6.7.7 安装过程中常见问题

此时如果出现无法启动hosts之类的问题,查看ssh的配置文件是否更改为允许root用户登陆

如果出现检测不到agent,首先查看IP地址是否正确查看cloudera-scm-agent 是否启动。如果没有启动查看日志

6.7.8出现ImportError: No module named _io错误

这是因为CDH5使用的Python版本问题。执行完下面的脚本后,点击重试就可以顺利的完成安装了

root@master:~# mv /usr/lib/cmf/agent/build/env/bin/python /usr/lib/cmf/agent/build/env/bin/python.bak
root@master:~# cp /usr/bin/python2.7 /usr/lib/cmf/agent/build/env/bin/python

6.7.9继续安装群集安装成功之后检测主机性能时

出现Cloudera 建议将 /proc/sys/vm/swappiness 设置为 0。
修改swappiness的值为零:

root@master:cat /proc/sys/vm/swappiness
root@master:sysctl vm.swappiness=0
root@master:echo 0 > /proc/sys/vm/swappiness

6.7.10数据库设置

此时用到的数据库正是我们前面创建的数据库

7 向集群添加节点:

  1. 在主机上重复搭建环境部分中的1-6步和第8步,不需要建立mysql
  2. 重复搭建Cloudera CDH环节中的第1步、第4步、第7步。
  3. 把主机/opt/cloudera/parcels复制到从节点相应的目录
  4. 在管理界面点击向集群添加主机
  5. 此后按照之前的方法进行安装