1.1 CentOS7安装cdh6.0.1详细文档

首先,我强调一下,其实最主要的步奏都是参照 官网的 安装步奏进行 配置的。官网是 最好的解决方案,网上的很多博文只是用来参考,这点大家切记切记。
https://www.cloudera.com/documentation/enterprise/6/6.0/topics/installation_reqts.html

0.安装环境

0.1 安装环境

1.安装前准备

1.1 操作系统设置
1.1.1 配置固定IP 与 解析关系
1.1.2 关闭 SELINUX
1.1.3 关闭防火墙
1.1.4 配置时间同步 NTP
1.1.5 配置集群 ssh免密登录

2.安装

2.1 步骤1 Linux 下安装JDK

2.2 步骤2 配置Repo

2.3 步骤3 安装服务

2.4 步骤4 修改各节点配置 并启动 cloudera-scm-agent

2.5 步骤5 安装并配置MySQL

2.6 步骤6 配置CM 及其他服务的数据库 基于 MySQL,增加mysql-connector 包

2.7 步骤7 初始化数据库,启动服务

2.8 步骤8 Parcel 安装

3.常见问题详解

3.1 安装中断,如何继续

3.2 Inspector 检测 出现各种错误警告

3.3 运行日志在哪里

4.几种加快安装的方式

4.1 启动httpd 服务,使用离线 parcel 包安装

4.2 创建本地yum源,使用离线 rpm 包安装

======================================================================

0.安装环境

0.1 安装环境
本文的安装环境在 CentOS7 下 搭建完成

Linux 版本 : CentOS 7

CDH版本 :CM 6.0.1

1.安装前准备

1.1 操作系统设置
1.1.1 配置固定IP 与 解析关系
1.1.2 关闭 SELINUX
1.1.3 关闭防火墙
1.1.4 配置时间同步 NTP
1.1.5 配置集群 ssh免密登录
上述安装前基础配置参考我的简书
https://www.jianshu.com/p/52c6b3b4f519

2.安装

2.1 步骤1 安装Java

要求:
JDK必须是64位。不要使用32位JDK。
已安装的JDK必须是受支持的版本java1.8以上。
在相同版本的JDK必须安装在每个集群主机上。
必须安装JDK在 /usr/java/jdk-versio (很重要注意)

安装jdk流程参考https://www.jianshu.com/p/456041b488c9

2.2 步骤2 配置Repo

该步骤建议替换从本地yum源安装的方式 !!!!!!
首先我们需要下载 Repo , Repo 是 yum 用来管理包的配置文件。
下载地址:
https://archive.cloudera.com/cm6/6.0.1/redhat7/yum/cloudera-manager.repo

通过以下指令:
 
sudo wget <repo_file_url> -P /etc/yum.repos.d/

repo_file_url 换成以上的地址即可

-P LOCAL_DIR:保存所有的文件或目录到指定的目录下

之后我们还需要执行以下指令,Import the repository signing GPG key:

sudo rpm --import https://archive.cloudera.com/cm6/6.0.1/redhat7/yum/RPM-GPG-KEY-cloudera

2.3 步骤3 安装服务

这个步骤主要用来 安装 cloudera-manager-daemon 与 cloudera-manager-agent , cloudera-manager-server

其中 cloudera-manager-daemon 与 cloudera-manager-agent 是要每台机器进行安装的

cloudera-manager-server 只需要 在集群中想作为 未来管理节点的机器上安装即可 .

我们先看下是否能找到这些包

我们执行下面指令:

yum search cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

这里,我们采用 yum 安装。

安装指令:

主节点:

yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

其他节点:

yum install cloudera-manager-daemons cloudera-manager-agent

最后建议把这些服务设置为 开机启动服务,方便管理。在集群重启的时候,可以不用担心服务的问题。

主节点:

sudo systemctl enable cloudera-scm-agent

sudo systemctl enable cloudera-scm-server

其他节点:

sudo systemctl  enable  cloudera-scm-agent

2.4 步骤4 修改各节点配置 并启动 cloudera-scm-agent

配置各个节点的 agent,使得各个节点的 agent 都指向 主节点:

主要通过以下步奏:

修改 /etc/cloudera-scm-agent/config.ini


image.png
[General]
# Hostname of the CM server.
#server_host=localhost
server_host=cdh-manager

# Port that the CM server is listening on.
server_port=7182

更多的配置 ,请参考以下文档:
https://www.cloudera.com/documentation/enterprise/6/latest/topics/cm_ag_agent_config.html#cmug_topic_5_16__section_kw3_5rq_wm

2.5 步骤5 安装并配置 MySQL (只需要 主节点)

mysql安装参考https://www.jianshu.com/p/1c41ce3e9305

2.6 步骤6 配置CM 及其他服务的数据库 基于 MySQL,增加mysql-connector 包

我们需要给 mysql 增加必要的用户,用于其他组件 将 mysql 作为源数据库。


image.png

我们登录mysql 执行以下指令,我们给每个数据库设置密码 123456 :

CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY '123456';
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY '123456';
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY '123456';
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY '123456';
GRANT ALL ON metastore.* TO 'metastore'@'%' IDENTIFIED BY '123456';
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY '123456';
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY '123456';
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY '123456';
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY '123456';

刷新权限:

FLUSH PRIVILEGES;

必须使用flush privileges的两种情况

1)、改密码。

2)、授权超用户。

除此以外,我们需要

Installing the MySQL JDBC Driver

具体步骤如下:
Download the MySQL JDBC driver from http://www.mysql.com/downloads/connector/j/5.1.html (in .tar.gz format). As of the time of writing, you can download version 5.1.46 using wget as follows:

wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz

Extract the JDBC driver JAR file from the downloaded file. For example:

tar -zxvf mysql-connector-java-5.1.46.tar.gz

Copy the JDBC driver, renamed, to /usr/share/java/. If the target directory does not yet exist, create it. For example:

sudo mkdir -p /usr/share/java/
cd mysql-connector-java-5.1.46
sudo cp mysql-connector-java-5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar

2.7 步骤7 初始化数据库,启动服务

由于这里我们用到了 cm 使用 mysql 作为源数据库,所以我们应该对 mysql 进行初始化,

初始化 的步奏 如下

The syntax for the scm_prepare_database.sh script is as follows:

sudo /opt/cloudera/cm/schema/scm_prepare_database.sh [options] <databaseType> <databaseName> <databaseUser> <password>

示例如下:

sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm 123456

该步骤做完之后,我们就可以启动 cm 了

启动命令如下:

sudo systemctl start cloudera-scm-server

开机启动

 sudo systemctl enable cloudera-scm-server

2.8 步骤8 Parcel 安装

如果这些步骤都顺利进行的话,我们应该可以访问 cm 的 7180 端口 进行初始化配置了。

初始化界面如下:


image.png

我们进行下一步。如果 我们的 agent 配置合理,可以扫描到集群中的机器。 参考 2.4
然后我们选择 parcel 6.0.1 网络安装 ,国内大约要 8-10 h ,我们可以下载离线包的形式进行配置。参考 第4 章 ,加速安装部分。
安装最后,我们再登录 cm 即可看到 管理界面了。

image

3.常见问题详解

cdh环境安装后只有hdfs用户是supergroup组,每次操作要从root用户切换到hdfs用户,并且有的代码操作比如Bulk Load大量数据插入到hbase操作时会报错hbase用户权限不够,所以要把hbase用户也加到supergroup组内。索性把root和hbase用户都加入supergroup组,以后再遇到哪个用户权限不够再加

操作步骤如下:

1、在Linux执行如下命令增加supergroup

groupadd supergroup

2、如将用户root增加到supergroup中,再执行:

usermod -a -G supergroup root

3、同步系统的权限信息到HDFS:

su - hdfs -s /bin/bash -c "hdfs dfsadmin -refreshUserToGroupsMappings"

即可

3.1 安装中断,如何继续

出现原因:

parcel 包下载自动安装后,服务没分配


image

Step1 :

在顶部状态栏:

选择继续下一步安装

Step2:

分配服务:

3.2 Inspector 检测 出现各种错误警告

CDH创建Mysql数据库时能找到服务器找不到数据库
在创建新的数据库后应运行以下语句来修改数据库访问权限

mysql -uroot -proot -e"GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;FLUSH PRIVILEGES;"

===============================

Cloudera 建议将 /proc/sys/vm/swappiness 设置为最大值 10。当前设置为 30。

echo "vm.swappiness=10" >> /etc/sysctl.conf

===========================

已启用透明大页面压缩,可能会导致重大性能问题

echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.local 
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local 
chmod +x /etc/rc.d/rc.local

===================

自启动CDH挂掉
原因:ip地址映射错误
Mysql服务未启动

========================

CDH安装Yarn时NodeManager启动失败
Error starting NodeManager
org.apache.hadoop.service.ServiceStateException: org.fusesource.leveldbjni.internal.NativeDB$DBException: IO error: /var/lib/hadoop-yarn/yarn-nm-recovery/yarn-nm-state/LOCK: 权限不够

方法一:修改目录权限

chmod -R 755 /var/lib/hadoop-yarn/

方法二:删除该对应子目录重试CDH添加服务操作

CDH内存不足超过阈值
调整主机配置参数 默认0.8 剩余内存为系统占用(可调整优化)

3.3 运行日志在哪里

运行日志 所在目录

/var/log

下 cloudera 开头的都是 目录 ,重要的是 cloudera-scm-server

4.几种加快安装的方式

4.1 启动httpd 服务,使用离线 parcel 包安装

这里我们需要借用httpd 搭建一个网络服务

Httpd
CentOS7 默认是不安装 httpd 的,我们通过以下指令先安装下 httpd 服务

安装:

yum install -y httpd

启动httpd 服务:

systemctl start httpd

开机启动

systemctl enable httpd

启动后,我们可以直接通过地址访问一下,看下服务是否启动正常: httpd 默认使用的就是 80端口


image

注意 httpd 有一定的公约,/var/www/html 是 httpd 的根目录,

假设我们 将文件放在 /var/www/html/cdh6/parcels/6.0.1 下,我们可以通过页面访问到 :
http://192.168.75.134/cdh6/parcels/6.0.1/

image

==================================

这里我们需要从官网上下载对应系统的 parcel,在安装时候通过本地加速

6.0.1 版本的地址如下,

https://archive.cloudera.com/cdh6/6.0.1/parcels/

注意

manifest.json 与 sha256 校验文件最好一并下载

4.2 创建本地数据源

step1 : 搭建httpd 服务

这里我们需要借鉴上一个小节 4.1 的 httpd 服务,不熟悉的可以先看下 httpd 服务如何搭建。

搭建好服务后,启动httpd

step2: 下载所需要的包

我们就从官网上下载对应系统 rpm 包

官网地址

https://archive.cloudera.com/cm6/6.0.1/redhat7/yum/RPMS/x86_64/

将该目录下的rpm全部下载。下载好后,我们将这些包放置在

/var/www/html/yum/centos7/repo/

目录下。

step3: 创建本地 repo 源

首先,我们要为下载的这些rpm,生成一个依赖关系。

我们执行以下指令

cd /var/www/html/yum/centos7/repo/

createrepo .
image

之后。会生成一个 repodata 文件夹

除此之外,我们还需要为源,编写 .repo 文件来描述我们的源。

首先,我们切换到所有 源的配置目录

cd /etc/yum.repos.d/

新建一个 localCDH.repo

内容如下:

[localCDHRepo]
name=local_CDH_Repo
baseurl=http://192.168.75.134/yum/centos7/repo/
enabled=true
gpgcheck=false

最后,我们执行下

yum makecache  
[root@cdh-repo yum.repos.d]# yum makecache
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.tuna.tsinghua.edu.cn
 * extras: mirrors.neusoft.edu.cn
 * updates: mirrors.tuna.tsinghua.edu.cn
base                                                                                                                                                 | 3.6 kB  00:00:00     
epel                                                                                                                                                 | 3.2 kB  00:00:00     
extras                                                                                                                                               | 3.4 kB  00:00:00     
localCDHRepo                                                                                                                                         | 2.9 kB  00:00:00     
updates                                                                                                                                              | 3.4 kB  00:00:00     
Metadata Cache Created

更新本地缓存,这样就加载了我们新创建的源。
之后,我们把 localCDH.repo 放到其他机器的 /etc/yum.repos.d/ 目录下,让其他机器也可以通过 httpd 访问到这些 rpm。