首先,我强调一下,其实最主要的步奏都是参照 官网的 安装步奏进行 配置的。官网是 最好的解决方案,网上的很多博文只是用来参考,这点大家切记切记。
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 -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
[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 作为源数据库。
我们登录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]
示例如下:
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 端口 进行初始化配置了。
初始化界面如下:
我们进行下一步。如果 我们的 agent 配置合理,可以扫描到集群中的机器。 参考 2.4
然后我们选择 parcel 6.0.1 网络安装 ,国内大约要 8-10 h ,我们可以下载离线包的形式进行配置。参考 第4 章 ,加速安装部分。
安装最后,我们再登录 cm 即可看到 管理界面了。
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 包下载自动安装后,服务没分配
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端口
注意 httpd 有一定的公约,/var/www/html 是 httpd 的根目录,
假设我们 将文件放在 /var/www/html/cdh6/parcels/6.0.1 下,我们可以通过页面访问到 :
http://192.168.75.134/cdh6/parcels/6.0.1/
==================================
这里我们需要从官网上下载对应系统的 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 .
之后。会生成一个 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。