简介
基于CentOS7
安装CDH5.14.2
CM
和CDH
,大版本应该要一致,比如CM
为5.14,CDH
也是5.14 ,也要和系统版本对应。
这里下载的是:
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
环境准备
安装系统
安装过程不再赘述,如果安装过程选择的是自动分区,可以按需对分区大小进行调整。
==以下所有操作均在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
失败重新安装
#去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后,勾选是,继续
选择免费版本,继续
继续
各个Agent节点正常启动后,可以在当前管理的主机列表中看到对应的节点。选择要安装的节点,这里选择全部节点,继续
出现以下版本的包,说明本地Parcel包配置无误,直接点继续
如果配置本地Parcel包无误,那么已下载是瞬间就完成的,因为不需要下载,然后耐心等待分配过程就行了,速度由内网网速决定。完成后点击继续。
接下来是服务器检查,如果前面严格按照步骤一步步做下来这里应该是不会出现任何问题的,全绿通过。点击完成。
接下来是选择安装服务,根据需要按需选择就好,点击继续
服务配置,根据节点情况进行分配,点击继续
接下来是数据库的设置
下面是集群设置的审查页面,修改日志等目录,继续。
全部绿色通过,然后点击继续。
到此为止CDH集群就算部署完毕了
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页面可以看到新的spark2
的parcel
包
2.3.0.cloudera3-1.cdh5.13.3.p0.458809
然后点击 下载-进行分配-激活
5、在集中添加服务
点击-添加服务,选择Spark2
服务
选择一组依赖关系
进行角色分配
加密这时默认不做选择
进行下步安装
安装完成
完成后启动Spark2
服务
组件升级
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 发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。