史上最详细基于CentOS7的CDH5.X安装步骤

简介

基于CentOS7安装CDH5.14.2

下载CentOS7

CM下载地址

CDH下载地址

CMCDH,大版本应该要一致,比如CM为5.14,CDH也是5.14 ,也要和系统版本对应。

这里下载的是:

CentOS

CM

CDH:CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha1

CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel

manifest.json

环境准备

安装系统

安装过程不再赘述,如果安装过程选择的是自动分区,可以按需对分区大小进行调整。

==以下所有操作均在root下完成==

调整分区大小

#CentOS 7 调整 home分区扩大 root分区
#总体过程:
#把/home内容备份,然后将/home文件系统所在的逻辑卷删除,扩大/root文件系统,新建/home ,恢复/home内容
 
#1.查看分区
df -h
#2.备份home分区文件
tar cvf /tmp/home.tar/home
#3.卸载/home,如果无法卸载,先终止使用/home文件系统的进程
fuser -km /home/
umount /home
#4.删除/home所在的lv
lvremove/dev/mapper/centos-home
#5.扩展/root所在的lv,增加800G
lvextend -L +800G/dev/mapper/centos-root
#6.扩展/root文件系统
xfs_growfs/dev/mapper/centos-root
#7.重新创建home lv
lvcreate -L 73G -n/dev/mapper/centos-home
#8. 创建文件系统
mkfs.xfs  /dev/mapper/centos-home
#9.挂载home
mount/dev/mapper/centos-home
#10.home文件恢复
tar xvf /tmp/home.tar -C/home/
cd /home/home/
mv * ../

挂载数据盘

2T以上的盘需要使用parted命令,参考https://www.cnblogs.com/Eason...

配置网络

vim /etc/sysconfig/network-scripts/ifcfg-eth1

禁用IPV6

echo "                   " >> /etc/modprobe.d/dist.conf
echo "alias net-pf-10 off" >> /etc/modprobe.d/dist.conf
echo "alias ipv6 off" >> /etc/modprobe.d/dist.conf

配置主机名

hostnamectl set-hostname cdh1
exec bash  

设置hosts

vi /etc/hosts
192.168.140.110 cdh1
192.168.140.111 cdh2
192.168.140.112 cdh3

关闭SELinux

vi /etc/selinux/config
    SELINUX=disabled  
setenforce 0

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

设置语言编码以及时区

echo 'export TZ=Asia/Shanghai' >> /etc/profile;
echo 'export LANG=en_US.UTF-8' >> /etc/profile;
source /etc/profile;

修改ssh端口

#按需修改,如无特殊要求,不用修改
vim /etc/ssh/sshd_config
    Port=2200
systemctl restart sshd

配置SSH免密登陆

#生成密钥:(默认位于 ~/.ssh/)
ssh-keygen -t rsa
#拷贝公钥到所有机器:
ssh-copy-id root@cdh1
ssh-copy-id root@cdh2
ssh-copy-id root@cdh3  
#修改端口时,执行以下命令,或者直接将所有节点的id_rsa.pub复制到所有节点的~/.ssh/authorized_keys
ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 2200 root@cdh1"
ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 2200 root@cdh2"
ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 2200 root@cdh3"  

配置NTP服务

vi /etc/ntp.conf
#master配置:
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
server 127.127.1.0
fudge 127.127.1.0 stratum 10

#slave配置:
server master(此处为master节点的hostname)

#设置开机启动:
chkconfig ntpd on
#启动ntp:
service ntpd start

透明大页面调整:

echo never > /sys/kernel/mm/transparent_hugepage/defrag 
echo never > /sys/kernel/mm/transparent_hugepage/enabled

swappiness调整

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

文件打开数目和用户最大进程数:

## 设置用户最大进程数
vim /etc/security/limits.conf
## 结尾添加以下内容
*       soft    nofile          32768
*       hard    nofile          1048576
*       soft    nproc           65536
*       hard    nproc           unlimited
*       soft    memlock         unlimited
*       hard    memlock         unlimited

Java

官方下载地址https://www.oracle.com/techne...

选择rpm安装包,所有节点都要安装

rpm安装的默认路径即是CDH安装时会去寻找jdk的路径,否则在CM的安装中会报错

rpm安装会自动创建环境变量

<img src="CDH部署文档.assets/image-20191106204438971.png" alt="image-20191106204438971" style="zoom:67%;" />

#查看是否已经安装java
rpm -qa|grep java
#卸载自带的openjdk
rpm -e --nodeps xxx
#安装java
rpm -ivh  jdk-8u91-linux-x64.rpm
#rpm包并不需要我们来配置环境变量,我们只需要配置一个全局的JAVA_HOME变量即可
echo "JAVA_HOME=/usr/java/latest/" >> /etc/environment
source /etc/environment

Mysql

官方下载地址https://dev.mysql.com/downloa...

安装参考https://segmentfault.com/a/11...

<img src="CDH部署文档.assets/image-20191106202109140.png" alt="image-20191106202109140" style="zoom:67%;" />

<img src="CDH部署文档.assets/image-20191106202155189.png" alt="image-20191106202155189" style="zoom:67%;" />

安装

#检测是否有mariadb、mysql
rpm -qa | grep mariadb
rpm -qa | grep -i mysql
#如果有,就卸载
rpm -e --nodeps  mariadb-libs-5.5.56-2.el7.x86_64
#解压上传的tar包
tar -xvf MySQL-5.6.38-1.el6.x86_64.rpm-bundle.tar
#安装mysql
rpm -ivh MySQL-server-5.6.38-1.el6.x86_64.rpm
rpm -ivh MySQL-client-5.6.38-1.el6.x86_64.rpm

配置my.cnf

[client]
default-character-set=utf8
[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
transaction-isolation = READ-COMMITTED
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links = 0

key_buffer_size = 32M
max_allowed_packet = 32M
thread_stack = 256K
thread_cache_size = 64
query_cache_limit = 8M
query_cache_size = 64M
query_cache_type = 1

max_connections = 550
#expire_logs_days = 10
#max_binlog_size = 100M

#log_bin should be on a disk with enough free space. Replace '/var/lib/mysql/mysql_binary_log' with an appropriate path for your system
#and chown the specified folder to the mysql user.
log_bin=/var/lib/mysql/mysql_binary_log

# For MySQL version 5.1.8 or later. For older versions, reference MySQL documentation for configuration help.
binlog_format = mixed

read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M

# InnoDB settings
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit  = 2
innodb_log_buffer_size = 64M
innodb_buffer_pool_size = 4G
innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT
innodb_log_file_size = 512M

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
sql_mode=STRICT_ALL_TABLES

设置开机启动

#加入到系统服务
chkconfig --add mysql
#开机自启
chkconfig mysql on

重启mysql

#重启mysql
systemctl restart mysqld.service
#查看默认生成的随机密码
cat /root/.mysql_secret 
#登陆mysql
mysql -uroot -p123456

初始化mysql

Grant all privileges on . to 'root'@'%' identified by '123456' with grant option; 
flush privileges;

create database if not exists amon default charset utf8 collate utf8_general_ci;
create database if not exists rman default charset utf8 collate utf8_general_ci;
create database if not exists nav default charset utf8 collate utf8_general_ci;
create database if not exists navms default charset utf8 collate utf8_general_ci;
create database if not exists hue default charset utf8 collate utf8_general_ci;
create database if not exists sentry default charset utf8 collate utf8_general_ci;
create database if not exists hive;
create database if not exists oozie;
create database if not exists scm;
grant all on hive.* to 'hive'@'%' identified by 'hive' with grant option;
grant all on oozie.* to 'oozie'@'%' identified by 'oozie' with grant option;
grant all on hue.* to 'hue'@'%' identified by 'hue' with grant option;
grant all on amon.* to 'amon'@'%' identified by 'amon' with grant option;
grant all on rman.* to 'rman'@'%' identified by 'rman' with grant option;
grant all on nav.* to 'nav'@'%' identified by 'nav' with grant option;
grant all on navms.* to 'navms'@'%' identified by 'navms' with grant option;
grant all on sentry.* to 'sentry'@'%' identified by 'sentry' with grant option;
grant all on *.* to 'scm'@'%' identified by 'scm'  with grant option;
flush privileges;

Mysql驱动包放入Java 共享目录,三台服务器都要做

#第一步:重命令Mysql驱动包,把版本号去掉
mv mysql-connector-java-5.1.44-bin.jar mysql-connector-java.jar
#第二步:将jar包移到java共享目录下
mv mysql-connector-java.jar /usr/share/java/
#第三步:将Mysql驱动包分发到另外两台服务器
scp -P2200 /usr/share/java/mysql-connector-java.jar root@cdh1:/usr/share/java
scp -P2200 /usr/share/java/mysql-connector-java.jar root@cdh2:/usr/share/java
scp -P2200 /usr/share/java/mysql-connector-java.jar root@cdh3:/usr/share/java

Cloudera Manager

安装步骤

#使用hadoop用户来操作
useradd hadoop
chmod u+w /etc/sudoers
#执行visudo 命令,按“i”进入编辑模式或执行下面命令,找到“root ALL=(ALL) ALL ”,在后面添加:”dba ALL=(ALL) NOPASSWD: ALL”
vim /etc/sudoers
chmod u-w /etc/sudoers

#1、在所有节点执行命令,创建目录:
sudo mkdir /opt/cloudera-manager
#2、在所有节点,将下载好的cloudera-manager-centos7-cm5.14.2_x86_64.tar.gz文件,上传到/opt目录下
#3.在所有节点,解压该文件到/opt/cloudera-manager目录
tar -zxvf /opt/cloudera-manager-centos7-cm5.14.2_x86_64.tar.gz -C /opt/cloudera-manager
#4.在所有节点,创建用户,这是CM需要使用的用户
sudo useradd --system --home=/opt/cloudera-manager/cm-5.14.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
#5.在server节点,创建CM服务本地数据存放目录,并赋予权限
sudo mkdir /var/lib/cloudera-scm-server
sudo chown cloudera-scm:cloudera-scm /var/lib/cloudera-scm-server
#6.在所有的agent节点,修改server_host为server节点的主机名
vim /opt/cloudera-manager/cm-5.14.2/etc/cloudera-scm-agent/config.ini
    server_host=cdh1
#7.在所有节点,将上面准备好的数据库驱动上传到/usr/share/java目录下,安装mysql时已经上传
#可以到MySql的官网下载JDBC驱动,http://dev.mysql.com/downloads/connector/j/,解压后找到mysql-connector-java-5.1.**-bin.jar

#8.在server节点上执行命令。初始化数据库scm。mysql scm scm scm分别代表:数据库类型 database名称 数据库用户名 数据库密码
/opt/cloudera-manager/cm-5.14.2/share/cmf/schema/scm_prepare_database.sh  mysql scm scm scm
#如果不在一个节点上,命令为: 
/opt/cloudera-manager/cm-5.14.2/share/cmf/schema/scm_prepare_database.sh -h 192.168.9.20   mysql scm scm scm
#9.在主节点执行,创建CDH文件存放目录
mkdir /opt/cloudera/
cd /opt/cloudera
mkdir parcel-repo
#10.将上面准备好的CDH的3个文件,上传至/opt/cloudera/parcel-repo路径下
#CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel
#CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha
#manifest.json
#一定要将CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha1,重命名为CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha

#11.在server节点,启动CM server    cdh1
/opt/cloudera-manager/cm-5.14.2/etc/init.d/cloudera-scm-server start
#12.在agent节点,启动CM agent      cdh1-cdh3
/opt/cloudera-manager/cm-5.14.2/etc/init.d/cloudera-scm-agent start
#13.稍等一会,访问地址:serverip:7180,出现CM界面,用户名密码都是admin。接下来就是一步一步的配置。

==一定要将CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha1,重命名为CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha==

用浏览器打开http://masterIP:7180/进行访问了,登录用户名与密码分别为admin

img

失败重新安装

#去mysql数据库删除cm库
mysql -uroot -pmlamp
show databases;
drop database cm;
umount cm-5.16.2/run/cloudera-scm-agent/process #必须卸载之后才可以删除,否则提示占⽤
rm -rf cm-5.16.2/  

CDH

接着上面的CM,登陆CM后,勾选是,继续

img

选择免费版本,继续

img

继续

img

各个Agent节点正常启动后,可以在当前管理的主机列表中看到对应的节点。选择要安装的节点,这里选择全部节点,继续

img

出现以下版本的包,说明本地Parcel包配置无误,直接点继续

img

如果配置本地Parcel包无误,那么已下载是瞬间就完成的,因为不需要下载,然后耐心等待分配过程就行了,速度由内网网速决定。完成后点击继续。

img

img

接下来是服务器检查,如果前面严格按照步骤一步步做下来这里应该是不会出现任何问题的,全绿通过。点击完成。

img

接下来是选择安装服务,根据需要按需选择就好,点击继续

img

​ 服务配置,根据节点情况进行分配,点击继续

img

接下来是数据库的设置

img

下面是集群设置的审查页面,修改日志等目录,继续。

img

全部绿色通过,然后点击继续。

img

到此为止CDH集群就算部署完毕了

img

img

Spark2

下载文件

下载所需的安装包http://archive.cloudera.com/s...

SPARK2_ON_YARN-2.3.0.cloudera3.jar

下载parcel文件http://archive.cloudera.com/s...

SPARK2-2.3.0.cloudera3-1.cdh5.13.3.p0.458809-el7.parcel

SPARK2-2.3.0.cloudera3-1.cdh5.13.3.p0.458809-el7.parcel.sha1

manifest.json

说明:要选择相对应的系统、CDH版本

我的系统是CentOS7所以选择了el7,都选择cloudera3相应的parcel

安装步骤

1、上传CSD包到CM节点的/opt/cloudera/csd目录

chown cloudera-scm:cloudera-scm SPARK2_ON_YARN-2.3.0.cloudera3.jar

2、上传parcel的3个包到CM的/opt/cloudera/parcel-repo目录下
SPARK2-2.3.0.cloudera3-1.cdh5.13.3.p0.458809-el6.parcel
SPARK2-2.3.0.cloudera3-1.cdh5.13.3.p0.458809-el6.parcel.sha
manifest.json
3、重启CM和集群

/opt/cloudera-manager/cm-5.14.2/etc/init.d/cloudera-scm-agent restart
/opt/cloudera-manager/cm-5.14.2/etc/init.d/cloudera-scm-server restart

如之前有manifest.json文件,先把之前的更名后再上传

4、通过CM安装Spark2

CM页面-> 主机 -> Parcel页面可以看到新的spark2parcel

2.3.0.cloudera3-1.cdh5.13.3.p0.458809

然后点击 下载-进行分配-激活

img

5、在集中添加服务

点击-添加服务,选择Spark2服务

img

选择一组依赖关系

img

进行角色分配

img

加密这时默认不做选择

img

进行下步安装

img

安装完成

img

完成后启动Spark2服务

img

组件升级

hive:https://blog.csdn.net/weixin_...

遇到的坑

1、hive单用户问题

现象一:用hdfs用户登录上hive后,另启动一个窗口(同一个服务器) 以hdfs用户登录spark2-shell ,报错登录不上,
(错误XSDB6:另一个Derby实例可能已经引导了数据库(Caused by: ERROR XSDB6: Another instance of Derby may have already booted the database)

现象二:在cdh1上的操作(建库、建表、插数据),在cdh2-4上看不到,各个节点之间的数据是隔离的

问题定位:在安装hive的时候选择的metadata数据库是mysql,在cm管理页面也能看到相关的配置,但是服务器上hive的配置文件中仍然是默认的derby数据库

解决:将hive-site.xml中数据库配置改为mysql

2、spark2-shell启动报错

现象:只有在spark2的安装节点(安装History Server)才能执行spark2-shell,其他节点报错:找不到self4j

问题定位:只有安装节点的/etc/spark2/conf/有spark2的配置文件,其他节点没有

解决:将安装节点/etc/spark2/conf/下的spark2配置文件上传的其他节点的/etc/spark2/conf/目录

上面两个问题有点相似,都是配置文件未生效,猜测这与更改ssh端口有关(内网不允许使用22端口,更改成了其他端口)

3、beeline和jdbc连接hive失败

现象:使用beeline连接hive时好时坏,jdbc连接超时

问题定位:在hive-site.xml 找不到hive.server2.thrift.bind.host配置

解决:修改hive-site.xml ,添加hive.server2.thrift.bind.host:

<property>
        <name>hive.server2.thrift.bind.host</name>
        <value>0.0.0.0</value>
        <description>host设置成0.0.0.0,来接收未知来源的ip  
          Bind host on which to run the HiveServer2 Thrift interface.
          Can be overridden by setting $HIVE_SERVER2_THRIFT_BIND_HOST
        </description>
  </property>

4、Elasticsearch6 alias问题

现象:明察1.6,ES6,使用明察脚本创建索引时,并没有指定别名,但是最终在ES上有别名。导致明察检索页面展示异常、按索引操作ES的时候会找不到索引。

问题定位:明察页面展示字段信息异常,查看后台日志提示找不到索引,查看索引状态,发现有别名

解决:删除别名

本文由博客群发一文多发等运营工具平台 OpenWrite 发布
阅读 832

推荐阅读