版本信息:
Cloudera Manager版本:cdh5.16.2
CDH版本:cm5.16.2
Linux系统版本:SentOS7.4
Mariadb版本:mariadb5.5+
1、前置准备
1.1、IP、hostname、hosts配置
- 本机虚拟机需要配置静态ip(所有)
作为服务器需要固定IP地址,配置静态IP主要是为了固定IP
centos7:nmcli conn modify ens192 ipaddr 192.168.0.200
nmcli conn show
vi /etc/sysconfig/network-scripts/ifcfg-ens**(根据本机网卡名来,table补全)
以下共参考,配置DEFROUTE以及本机对应ip网关等
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="ens33"
UUID="084b4e1b-2b19-465d-bd25-4de35cd407e6"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.92.130"
PREFIX="24"
GATEWAY="192.168.92.2"
DNS1="192.168.92.2"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_PRIVACY="no"
- 修改主机名(所有)
# 方法1:
hostnamectl set-hostname 主机名
# 方法2:
echo 主机名 > /etc/hostname
# 方法3:
vi /etc/hostname
- 配置IP映射(所有)
在每台节点/etc/hosts文件后追加如下内容,配置ip与hostname之间的映射
vi /etc/hosts
ip地址 主机名
192.168.0.200 cdh1.macro.com
192.168.0.221 cdh2.macro.com
192.168.0.222 cdh3.macro.com
2.1、关闭防火墙(所有)
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
3.1、禁用SELinux
所有节点关闭SELinux
临时关闭SELinux
setenforce 0
集群所有节点修改/etc/selinux/config文件如下(重启才能生效,所以需要配置上面的临时关闭): ```shell vi /etc/selinux/config 配置如下信息,限制开机自启
SELINUX=disabled SELINUXTYPE=targeted
![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1606024909512-c061ccf6-d7da-41aa-9ed4-b0d222d8758a.png#align=left&display=inline&height=202&margin=%5Bobject%20Object%5D&name=image.png&originHeight=202&originWidth=1349&size=26167&status=done&style=none&width=1349)
3. 检查所有机器是否已修改成功:
```shell
cat /etc/selinux/config
4.1、设置swappiness
- 注意:swappiness是Linux的一个内核参数,控制系统在进行swap时,内存使用的相对权重,范围在0到100之间。数值越低,就会让Linux系统尽量少用swap分区,多用内存;参数值越高相反
所有节点设置swappiness值
sysctl vm.swappiness=1
echo 1 > /proc/sys/vm/swappiness
cat /proc/sys/vm/swappiness
5.1、关闭透明大页面
注意:在RAC环境下,透明巨页(THP)会导致异常节点重启和性能问题;在单机环境中,透明巨页(THP)也会导致一些异常的性能问题;
所有节点执行关闭透明大页面
echo never > /sys/kernel/mm/transparent_hugepage/defrag
cat /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/enabled
所哟节点设置开机自关闭,将如下配置信息添加到 vi /etc/rc.d/rc.local文件末尾
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
赋权限
cat /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
ls -l /etc/rc.d | grep rc.local
6.1、获取相关包
下载地址
SentOS下载地址:https://www.centos.org/download/
cm下载地址:http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/
cdh下载地址:http://archive.cloudera.com/cdh5/parcels/
mysql-connetor下载地址:https://dev.mysql.com/downloads/connector/j/
- 下载相关包通过MobaXterm上传至Linux系统
相关包赋予755权限
chmod 755 /包名/*
2、依赖应用安装配置
2.1、yum源配置
2.1.1、httpd服务安装
下载httpd服务
yum -y install httpd
启动httpd服务
systemctl start httpd
systemctl status httpd
systemctl enable httpd
2.1.2、部分yum无法下载,需配置repo本地源地址。
如果/etc/yum.repos.d/下有内容,将其CentOS-*开头的所有文件删除或移动
mkdir /etc/yum.repos.d/allrepo/
mv /etc/yum.repos.d/CentOS-* /etc/yum.repos.d/allrepo/
yum repolist
挂载iso镜像至本地
创建本地挂载路径
mkdir /DVD1
mount -o loop /镜像路径 /DVD1
配置yum源文件
vi /etc/yum.repos.d/local_os.repo
复制以下内容按i开始粘贴:
[local_os_repo]
name=local_os_repo
baseurl=file:///DVD1
enabled=true
gpgcheck=false
保存退出后执行:
yum repolist
注意:执行完毕local_os_repo是有状态的,若状态为0,请检查路径
2.1.3、配置OS的repo源
直接挂载iso镜像文件到htpd的跟访问路径/var/www/html/iso
mkdir /var/www/html/iso
mount -o loop /home/SentOS-******* /var/www/html/iso/
移动上传至本地的cm、cdh等离线包到/var/www/html/(这里我上传的是/home目录)
mv /home/cm5.16.2 /var/www/html/
mv /home/cdh5.16.2 /var/www/html/
查看以上步骤是否成功
访问 http://192.168.0.200:80/iso (可以通过 netstat -ntpl 查看本地端口 没有netstat命令用 yun -y install net-tools下载 )
配置os源
vi /etc/yum.repos.d/os.repo
[osrepo]
name=os_repo
baseurl=http://192.168.92.200:80/iso
enabled=true
gpgcheck=false
2.1.4、配置CM的repo源
在cm5.16.2目录下执行createrepo . 创建cm5.16.2的yum源
cd /var/www/html/cm5.16.2/
createrepo .
ll
以上步骤报错找不到createrepo命令需要先下载再执行
yum -y install createrepo
cd /var/www/html/cm5.16.2/
createrepo .
配置cm的repo源文件
vi /etc/yum.repos.d/cm.repo
复制一下内容按 i 开始粘贴
[cmrepo]
name=cm_repo
baseurl=http://192.168.0.200/cm5.16.2/
enabled=true
gpgcheck=false
2.1.5、分发yum源
分发yum源至所有从节点
scp -r /etc/yum.repos.d root@cdh2.macro.com:/etc/
scp -r /etc/yum.repos.d root@cdh3.macro.com:/etc/
所有机器执行清空所有yum repo ,列出所有的yum repo。
yum clean all
yum repolist
注意注意执行完cm_repo的状态是不为零的,如果状态为0,请检查os源位置或者端口是否正确
2.2、安装MariaDB
主节点上下载mariadb及服务
yum -y install mariadb mariadb-server
启动并配置MariaDB ```shell systemctl start mariadb systemctl status mariadb systemctl enable mariadb /usr/bin/mysql_secure_installation
首先是设置密码,会提示先输入密码 Enter current password for root (enter for none):<–初次运行直接回车 设置密码 Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车 New password: <– 设置root用户的密码 Re-enter new password: <– 再输入一次你设置的密码 其他配置 Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车 Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车, Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车 Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车 初始化MariaDB完成,接下来测试登录 mysql -uroot -p 完成。
mysql -uroot -p123456
![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1606031261666-09937888-1de3-4cc5-89ef-4de978ddb154.png#align=left&display=inline&height=474&margin=%5Bobject%20Object%5D&name=image.png&originHeight=474&originWidth=964&size=80352&status=done&style=none&width=964)
3. 建立CM,Hive等需要的表
```shell
create database metastore default character set utf8;
CREATE USER 'hive'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON metastore. * TO 'hive'@'%';
FLUSH PRIVILEGES;
create database cm default character set utf8;
CREATE USER 'cm'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON cm. * TO 'cm'@'%';
FLUSH PRIVILEGES;
create database am default character set utf8;
CREATE USER 'am'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON am. * TO 'am'@'%';
FLUSH PRIVILEGES;
create database rm default character set utf8;
CREATE USER 'rm'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON rm. * TO 'rm'@'%';
FLUSH PRIVILEGES;
create database hue default character set utf8;
CREATE USER 'hue'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON hue. * TO 'hue'@'%';
FLUSH PRIVILEGES;
create database oozie default character set utf8;
CREATE USER 'oozie'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON oozie. * TO 'oozie'@'%';
FLUSH PRIVILEGES;
create database sentry default character set utf8;
CREATE USER 'sentry'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON sentry. * TO 'sentry'@'%';
FLUSH PRIVILEGES;
create database nav_ms default character set utf8;
CREATE USER 'nav_ms'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON nav_ms. * TO 'nav_ms'@'%';
FLUSH PRIVILEGES;
create database nav_as default character set utf8;
CREATE USER 'nav_as'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON nav_as. * TO 'nav_as'@'%';
FLUSH PRIVILEGES;
show databases;
exit;
2.3、时间同步
所有机器卸载本地时钟服务chrony
yum -y remove chrony
所有机器安装ntp时钟服务
yum -y install ntp
主节点配置时钟与自己同步
vi /etc/ntp.conf
#server 0.rhel.pool.ntp.org iburst
#server 1.rhel.pool.ntp.org iburst
#server 2.rhel.pool.ntp.org iburst
#server 3.rhel.pool.ntp.org iburst
server 127.127.1.0
fudge 127.127.1.0 stratum 10
集群从节点,配置找主节点机器同步
#server 0.rhel.pool.ntp.org iburst
#server 1.rhel.pool.ntp.org iburst
#server 2.rhel.pool.ntp.org iburst
#server 3.rhel.pool.ntp.org iburst
server 192.168.139.101 #第一台id
- 重启所有机器的ntp服务
systemctl start ntpd
systemctl status ntpd
systemctl enable ntpd
- 使用命令查看
ntpq -p
date
#查看时间是否一致(主机显示*LOCAL 从机显示主机地址)
2.4、安装jdbc驱动
创建目录并移动连接驱动至该目录(我的con文件在。homt目录下)
mkdir -p /usr/share/java/
mv /home/mysql-connector-java-5.1.34.jar /usr/share/java/.
进入con的目录给con文件赋权限并添加软连接
cd /usr/share/java
chmod 755 mysql-connector-java-5.1.34.jar
ln -s mysql-connector-java-5.1.34.jar mysql-connector-java.jar
ll
3、Cloudera Manager软件包安装
验证安装JDK
cd /var/www/html/cm5.16.2/
yum -y install oracle-j2sdk1.7-1.7.0+update67-1
在主节点安装Cloudera Manager Server
yum -y install cloudera-manager-server
初始化数据库
/usr/share/cmf/schema/scm_prepare_database.sh mysql cm cm password
启动Cloudera Manager Server
systemctl start cloudera-scm-server
systemctl status cloudera-scm-server
检查端口是否监听
netstat -lnpt | grep 7180
- 等待几分钟,启动服务器有点慢(可以通过日志查看是否启动完毕,查看是否有7180端口)
出现找不到netstat命令,使用以下命令
yum -y install net-tools
查看日志
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
通过访问 http://192.168.0.200:7180 进行验证
3、Cloudera Manager可视化配置
3.1、安装类型选择
登录密码账号都是admin
- 接受条款,点击继续
- 点击试用60天,然后继续
3.2、配置安装
- 搜索主机,选择所有主机,点击继续
- 定义Parcel,选择更多选项
- 删除多余Parcel地址,自定义Parcel地址,保存更改
- 自定义CM存储地址,点击继续
- 安装 JDK 以及加密政策
- 选择多用户,默认多用户,直接点继续
- 输入SSH密码,选择root用户,输入密码,继续执行。
- 等待集群安装成功,继续执行
- 等待集群安装完毕点击下一步
- 等待检查主机正确性,检测完毕点击完成。
- 注意,这里不能跳过,很多问题在这里可以检查到
3.3、集群设置
- 选择含Impala的内核,点击继续。
- 选择集群配置
- DataNode满足最小副本数
- Zookeeper满足单数节点(投标机制,双数有几率平票)
- 数据库设置
输入数据库名,用户名和密码,点击连接测试,测试通过点击继续。
- 集群审核更改
配置HDFS存储块大小,路径。Hive等的路径地址,点击继续。
- 等待集群首次运行成功,点击继续。
- 完成安装
4、安装kudu
- CDH 从 5.13 开始,直接打包 Kudu,不再需要下载额外的 Parcel 和csd文件。
- 添加kudu服务
- 勾选kudu服务,点击继续。
- 自定义集群角色分配,点击继续。
- 配置kudu的文件目录(fs_data_dir目录可能有多个,提高并发读写,从而提高 Kudu性能),点击继续。
- 等待系统启动kudu成功,点击继续。
- 完成安装
5、配置 Impala
- 点击impala进入配置。
- 选择配置,搜索【kudu】,勾选kudu服务,保存更改。
- 由于配置更新,服务需要重启才能生效。点击重启。
- 选择重启过时服务。
- 选择重启,等待重启任务执行完毕,点击完成。
6、组件验证
6.1、HDFS验证
6.1.1、检测能否上传文件等
创建本地文件,添加内容如下
vi /test.txt1
上传文件至hdfs
sudo -u hdfs hdfs dfs -put /test.txt1 /test
sudo -u hdfs hdfs dfs -cat /test/test.txt1
6.2、Hive验证
进入hive
hive
使用 hive cli,进行创建 hive 测试表,指定路径为上传的 HDFS 文件路径,并对该表进行查看
6.3、mapreduce 验证
6.4、impala验证
7、错误问题解决
7.1、主机运行状况不良
- 在做CM和CDH的安装遇到了在安装的过程当中出现了主机运行状态不良的情况。
- 出现这个首先想到的是因为我装了好多次,考虑集群环境被污染了。然后在网上找到说删除一个文件即可,删除问题文件 /var/lib/cloudera-scm-agent/cm_guid。
停止agent服务
systemctl stop cloudera-scm-agent
删除该文件
rm -rf /var/lib/cloudera-scm-agent/cm_guid
删除自己的路径,具体可以用find / -name cm_guid命令查询
重启cloudera-scm-agent服务
systemctl start cloudera-scm-agent
7.2. 部分文件无法安装
安装过程出现部分软件包无法安装,截图如下:
找到挂载镜像的地址下面的Packages目录,进入该目录找到缺失的包强制安装缺失的包
rpm -ivh 包名 --nodeps
重试失败的主机
7.3. 检查主机正确性出现swappiness警告
设置 /etc/sysctl.conf 和 /proc/sys/vm/swappiness文件
sysctl vm.swappiness=1
echo 1 > /proc/sys/vm/swappiness
/etc/sysctl.conf文件末尾添加 vm.swappiness=10,/proc/sys/vm/swappiness 如下。
- 点击重新检测