1.1 概述
Hadoop的发行版本有很多,有华为发行版,Intel发行版,Cloudera发行版(CDH),MapR版本,以及HortonWorks版本等。所有发行版都是基于Apache Hadoop衍生出来的,产生这些版本的原因,是由于Apache Hadoop的开源协议决定的:任何人可以对其进行修改,并作为开源或商业产品发布和销售。
收费版本:
收费版本一般都会由新的特性。国内绝大多数公司发行的版本都是收费的,例如Intel发行版本,华为发行版本等。
免费版本:
不收费的版本主要有三个(都是国外厂商)。
Cloudera版本(Cloudera’s Distribution Including Apache Hadoop)简称"CDH"。
Apache基金会hadoop
Hontonworks版本(Hortonworks Data Platform)简称"HDP"。
按照顺序代表了国内的使用率,CDH和HDP虽然是收费版本,但是他们是开源的,只是收取服务费用,严格上讲不属于收费版本。
Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称"CDH"),简单来说,Cloudera Manager是一个拥有集群自动化安装、中心化管理、集群监控、报警功能的一个工具(软件),使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到几人以内,极大的提高集群管理的效率。基于Web的用户界面,支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop,简化了大数据平台的安装、使用难度。
Cloudera Manager可以轻松管理任何生产规模的Hadoop部署。通过直观的用户界面快速部署,配置和监控群集 - 完成滚动升级,备份和灾难恢复以及可定制警报。
企业大数据平台的建设和运营无疑是重中之重,这也正成为企业信息化建设的核心任务和目标。通过构建企业大数据平台,对企业大规模数据进行科学高效的管理、分析、挖掘、监控、可视化,为公司内部产品的策划、运营、营销、财务、决策等提供科学精确的数据支撑,提高企业运营效率、最大化释放数据价值。
1.2 Cloudera Manager 的功能
cloudera manager有四大功能:
• 管理:对集群进行管理,如添加、删除节点等操作。
• 监控:监控集群的健康情况,对设置的各种指标和系统运行情况进行全面监控。
• 诊断:对集群出现的问题进行诊断,对出现的问题给出建议解决方案。
• 集成:多组件进行整合。
1.3 架构
cloudera manager的核心是管理服务器,该服务器承载管理控制台的Web服务器和应用程序逻辑,并负责安装软件,配置,启动和停止服务,以及管理上的服务运行群集。
Cloudera Manager Server由以下几个部分组成:
• Agent:安装在每台主机上。该代理负责启动和停止的过程,拆包配置,触发装置和监控主机。
• Management Service:由一组执行各种监控,警报和报告功能角色的服务。
• Database:存储配置和监视信息。通常情况下,多个逻辑数据库在一个或多个数据库服务器上运行。例如,Cloudera的管理服务器和监控角色使用不同的逻辑数据库。
• Cloudera Repository:软件由Cloudera 管理分布存储库。
• Clients:是用于与服务器进行交互的接口:
• Admin Console :基于Web的用户界面与管理员管理集群和Cloudera管理。
• API :与开发人员创建自定义的Cloudera Manager应用程序的API。
1.4 Cloudera Manager(CDH5)内部结构、功能包括配置文件、目录位置等
1.4.1 相关目录
/var/log/cloudera-scm-installer : 安装日志目录。/var/log/* : 相关日志文件(相关服务的及CM的)。/usr/share/cmf/ : 程序安装目录。/usr/lib64/cmf/ : Agent程序代码。/var/lib/cloudera-scm-server-db/data : 内嵌数据库目录。/usr/bin/postgres : 内嵌数据库程序。/etc/cloudera-scm-agent/ : agent的配置目录。/etc/cloudera-scm-server/ : server的配置目录。/opt/cloudera/parcels/ : Hadoop相关服务安装目录。/opt/cloudera/parcel-repo/ : 下载的服务软件包数据,数据格式为parcels。 /opt/cloudera/parcel-cache/ : 下载的服务软件包缓存数据。/etc/hadoop/* : 客户端配置文件目录。
1.4.2 官网文档
https://www.cloudera.com/documentation.html
2 安装部署
2.1 主机规划
主机名 角色 IP地址 系统 用途 功能 配置
master-data1 主节点 192.168.5.114 CentOS7.6 CM CMS MySQL Parcel CM CMS MySQL NN RM JHS SHS ZK 4C/16G/100G
salve-data2 从节点 192.168.5.118 CentOS7.6 Cloudera Agent DN NM SNN SPARK HMS HS2 Oozie Hue Sqoop ZK 4C/16G/100G
salve-data3 从节点 192.168.5.115 CentOS7.6 Cloudera Agent DN NM Journalnode ZK 4C/16G/100G
salve-data4 从节点 192.168.5.119 CentOS7.6 Cloudera Agent DN NM Journalnode 4C/16G/100G
注意:Journalnode和ZooKeeper保持奇数个,最少不少于 3 个节点
无论是Hadoop相关组件还是cm本身都需要使用到数据库,cm默认会使用内嵌数据库,但是这种方式并不推荐在生产环节使用
2.2 基础环境部署
2.2.1 网络配置(所有节点)
新增用户ptxbd
#新增用户ptxbduseradd ptxbdpasswd ptxbd在每台服务器 sudoers文件中添加%ptxbd ALL=(ALL) NOPASSWD:ALL%ptxbd ALL=(ALL) NOPASSWD:/bin/whoami
添加位置
[root@cdh04 ~]# vi /etc/sudoers
#第一台服务器上执行echo “192.168.5.114 cmaster01” >> /etc/hostsecho “192.168.5.118 slave02” >> /etc/hostsecho “192.168.5.115 slave03” >> /etc/hostsecho “192.168.5.119 slave04” >> /etc/hosts#因为所有主机的 hosts 文件都一致,为了减少重复工作使用,scp 命令拷贝到所有主机scp /etc/hosts root@192.168.159.10:/etc/#设置hostname#分别进入集群中的每个主机,设置 hostname,需要注意的是 hostname 最好不好设置为大写,因为后续如果要开启 kerberos 的时候会报错!hostnamectl set-hostname cmaster01hostnamectl set-hostname slave02hostnamectl set-hostname slave03hostnamectl set-hostname slave04#在每台主机上输入 hostname 看输出的结果是否与主机相对应Hostname#重启服务器
2.2.2 SSH免密码登陆
#在管理节点cmaster01执行ssh-keygen -t rsa,三次Enter键,slave不需要[ptxbd@ptx-bigdata1 ~]
s
s
h
−
k
e
y
g
e
n
−
t
r
s
a
[
p
t
x
b
d
@
p
t
x
−
b
i
g
d
a
t
a
1.
s
s
h
]
ssh-keygen -t rsa[ptxbd@ptx-bigdata1 .ssh]
ssh−keygen−trsa[ptxbd@ptx−bigdata1.ssh] ll-rw-------. 1 ptxbd ptxbd 1679 Feb 26 04:18 id_rsa-rw-r–r--. 1 ptxbd ptxbd 400 Feb 26 04:18 id_rsa.pub-rw-r–r--. 1 ptxbd ptxbd 358 Feb 26 03:24 known_hosts#拷贝公钥id_rsa.pub到其他节点ssh-copy-id slave02ssh-copy-id slave03ssh-copy-id slave04#验证ssh slave02
2.2.3 关闭防火墙和清空规则
#查看防火墙状态,注:active是绿的running表示防火墙开启systemctl status firewalld.service#关闭防火墙systemctl stop firewalld.service#开机禁用防火墙自启命令systemctl disable firewalld.service#启动防火墙systemctl start firewalld.service#防火墙随系统开启启动 systemctl enable firewalld.service#重启防火墙firewall-cmd –reload#清空防火墙规则sudo iptables -F
2.2.4 关闭所有节点SELINUX
vi /etc/selinux/config将 SELINUX=enforcing 改为 SELINUX=disabled[ptxbd@ptx-bigdata1 ~]$ sudo vi /etc/selinux/config
2.2.5 安装JDK
JDK 最好安装 1.8 的,因为 CDH6.0 以后 JDK 版本最低为 1.8
1)卸载openjdk
检查是否已经安装了jdk, java -verison
[root@cmaster01 ~]# rpm -qa|grep javajavapackages-tools-3.4.1-11.el7.noarchtzdata-java-2020a-1.el7.noarchjava-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64python-javapackages-3.4.1-11.el7.noarchjava-1.8.0-openjdk-headless-1.8.0.252.b09-2.el7_8.x86_64rpm -e --nodeps java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.252.b09-2.el7_8.x86_64
(说明:qa:查询所有安装包 -e: 卸载 -nodeps:忽略依赖)
2)上传jdk安装包
#安装文件上传下载工具[ptxbd@cmaster01 ~]$ sudo yum -y install lrzsz#创建cdh6.2.0文件夹,安装包存放位置[ptxbd@cmaster01 ~]$ mkdir cdh6.2.0#查看上传的相关安装包[ptxbd@cmaster01 cdh6.2.0]$ llCDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcelCDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.shacloudera-manager-agent-6.2.0-968826.el7.x86_64.rpmcloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpmcloudera-manager-server-6.2.0-968826.el7.x86_64.rpmjdk-8-linux-x64.tar.gzmanifest.jsonmysql-5.7.11-linux-glibc2.5-x86_64.tar.gzmysql-connector-java-5.1.47.tar.gz#分发JDK到其他服务器上[ptxbd@cmaster01 cdh6.2.0]$ scp jdk-8-linux-x64.tar.gz ptxbd@slave02:/home/ptxbd/cdh6.2.0/[ptxbd@cmaster01 cdh6.2.0]$ scp jdk-8-linux-x64.tar.gz ptxbd@slave03:/home/ptxbd/cdh6.2.0/[ptxbd@cmaster01 cdh6.2.0]$ scp jdk-8-linux-x64.tar.gz ptxbd@slave04:/home/ptxbd/cdh6.2.0/[ptxbd@cmaster01 cdh6.2.0]$ scp jdk-8-linux-x64.tar.gz ptxbd@slave05:/home/ptxbd/cdh6.2.0/
3)解压安装包
#每个节点都创建/usr/java目录sudo mkdir /usr/java/#解压到每个节点/usr/java/目录下sudo tar -zxvf jdk-8-linux-x64.tar.gz -C /usr/java/#必须修正所属用户及用户组sudo chown -R root:root /usr/java/jdk1.8.0drwxr-xr-x 7 root root 4096 Apr 2 2019 jdk1.8.0
*****提示:切记必须修正JDK所属用户及用户组 chown -R root:root /usr/java/jdk1.8.0
4)配置环境变量/etc/profile
sudo vi /etc/profile#Java配置export JAVA_HOME=/usr/java/jdk1.8.0export CLASSPATH=.:
J
A
V
A
H
O
M
E
/
j
r
e
/
l
i
b
/
r
t
.
j
a
r
:
JAVA_HOME/jre/lib/rt.jar:
JAVAHOME/jre/lib/rt.jar:JAVA_HOME/lib/dt.jar:
J
A
V
A
H
O
M
E
/
l
i
b
/
t
o
o
l
s
.
j
a
r
e
x
p
o
r
t
P
A
T
H
=
JAVA_HOME/lib/tools.jarexport PATH=
JAVAHOME/lib/tools.jarexportPATH=JAVA_HOME/bin:
P
A
T
H
5
)
刷
新
配
置
(
重
新
加
载
)
s
o
u
r
c
e
/
e
t
c
/
p
r
o
f
i
l
e
6
)
检
查
是
否
安
装
成
功
j
a
v
a
−
v
e
r
s
i
o
n
w
h
i
c
h
j
a
v
a
2.2.6
设
置
N
T
P
(
t
i
m
e
d
a
t
e
c
t
l
)
主
从
主
和
互
联
网
同
步
时
间
,
从
节
点
与
主
节
点
同
步
主
主
每
一
台
都
和
互
联
网
同
步
时
间
公
司
内
部
时
钟
服
务
器
1
、
环
境
准
备
1
)
t
i
m
e
d
a
t
e
c
t
l
查
看
时
间
各
种
状
态
:
[
p
t
x
b
d
@
p
t
x
−
b
i
g
d
a
t
a
2
e
t
c
]
PATH 5)刷新配置(重新加载) source /etc/profile 6)检查是否安装成功 java -versionwhich java 2.2.6 设置NTP(timedatectl) 主从 主和互联网同步时间,从节点与主节点同步 主主 每一台都和互联网同步时间 公司内部时钟服务器 1、环境准备 1)timedatectl查看时间各种状态: [ptxbd@ptx-bigdata2 etc]
PATH5)刷新配置(重新加载)source/etc/profile6)检查是否安装成功java−versionwhichjava2.2.6设置NTP(timedatectl)主从主和互联网同步时间,从节点与主节点同步主主每一台都和互联网同步时间公司内部时钟服务器1、环境准备1)timedatectl查看时间各种状态:[ptxbd@ptx−bigdata2etc] timedatectl Local time: Thu 2020-03-12 13:00:55 UTC Universal time: Thu 2020-03-12 13:00:55 UTC RTC time: Thu 2020-03-12 13:00:45 Time zone: UTC (UTC, +0000) NTP enabled: yesNTP synchronized: yes RTC in local TZ: no DST active: n/a
2)timedatectl list-timezones: 列出所有时区
3)timedatectl set-local-rtc 1 将硬件时钟调整为与本地时钟一致, 0 为设置为 UTC 时间
4)timedatectl set-timezone Asia/Shanghai 设置系统时区为上海
[ptxbd@ptx-bigdata2 ~]$ sudo timedatectl set-timezone Asia/Shanghai[ptxbd@ptx-bigdata2 ~]$ timedatectl Local time: Thu 2020-03-12 21:06:37 CST Universal time: Thu 2020-03-12 13:06:37 UTC RTC time: Thu 2020-03-12 13:06:28 Time zone: Asia/Shanghai (CST, +0800) NTP enabled: yesNTP synchronized: yes RTC in local TZ: no DST active: n/a
2.所有节点都需要安装 ntp,如果没有 ntp 先安装 ntp,一般集群无法连接外网,可以先完成配置本地源的操作
yum install -y ntp
3.在 cdh01修改 ntp.conf 输入 vi /etc/ntp.conf ,注释其他时间服务器,添加为本机
sudo vi /etc/ntp.conf#添加内容server 127.127.1.0fudge 127.127.1.0 stratum8
4.在其他节点(ptx-bigdata[2-5])修改 ntp.conf 文件 输入 vi /etc/ntp.conf 在26 行添加 server ptx-bigdata1 iburst,注释其他时间服务器
4.在其他节点(ptx-bigdata[2-5])修改 ntp.conf 文件 输入 vi /etc/ntp.conf 在26 行添加 server ptx-bigdata1 iburst,注释其他时间服务器
sudo vi /etc/ntp.conf
5.在所有节点启动 ntp 服务
sudo systemctl start ntpdsudo systemctl enable ntpd
6.验证是否成功设置开机自启动
sudo systemctl list-unit-files |grep enabled | grep ntpd
2.2.7 MySQL离线配置
以下安装太麻烦了用新的lnmp中安装db替代,现在master,添加服务的时候在在其他服务器安装
解压lnmp1.6.tar.gz:
#tar -zxvf lnmp1.6.tar.gz
#cd lnmp1.6
#./install.sh db
MySql 版本选择、摘自官网:
参考:https://github.com/Hackeruncle/MySQL
1.解压及创建目录
#解压到/usr/local/文件夹sudo tar -zxvf mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz -C /usr/local/#修改文件夹名称sudo mv mysql-5.7.11-linux-glibc2.5-x86_64 mysql#创建文件夹sudo mkdir mysql/arch mysql/data mysql/tmp
2.创建my.cnf(见文件)
[ptxbd@ptx-bigdata1 local]# sudo vi /etc/my.cnf[client]port = 3306socket = /usr/local/mysql/data/mysql.sockdefault-character-set=utf8mb4[mysqld]port = 3306socket = /usr/local/mysql/data/mysql.sockskip-slave-startskip-external-lockingkey_buffer_size = 256Msort_buffer_size = 2Mread_buffer_size = 2Mread_rnd_buffer_size = 4Mquery_cache_size= 32Mmax_allowed_packet = 16Mmyisam_sort_buffer_size=128Mtmp_table_size=32Mtable_open_cache = 512thread_cache_size = 8wait_timeout = 86400interactive_timeout = 86400max_connections = 600# Try number of CPU’s*2 for thread_concurrency#thread_concurrency = 32#isolation level and default enginedefault-storage-engine = INNODBtransaction-isolation = READ-COMMITTEDserver-id = 1739basedir = /usr/local/mysqldatadir = /usr/local/mysql/datapid-file = /usr/local/mysql/data/hostname.pid#open performance schemalog-warningssysdate-is-nowbinlog_format = ROWlog_bin_trust_function_creators=1log-error = /usr/local/mysql/data/hostname.errlog-bin = /usr/local/mysql/arch/mysql-binexpire_logs_days = 7innodb_write_io_threads=16relay-log = /usr/local/mysql/relay_log/relay-logrelay-log-index = /usr/local/mysql/relay_log/relay-log.indexrelay_log_info_file= /usr/local/mysql/relay_log/relay-log.infolog_slave_updates=1gtid_mode=OFFenforce_gtid_consistency=OFF# slaveslave-parallel-type=LOGICAL_CLOCKslave-parallel-workers=4master_info_repository=TABLErelay_log_info_repository=TABLErelay_log_recovery=ON#other logs#general_log =1#general_log_file = /usr/local/mysql/data/general_log.err#slow_query_log=1#slow_query_log_file=/usr/local/mysql/data/slow_log.err#for replication slavesync_binlog = 500#for innodb optionsinnodb_data_home_dir = /usr/local/mysql/data/innodb_data_file_path = ibdata1:1G;ibdata2:1G:autoextendinnodb_log_group_home_dir = /usr/local/mysql/archinnodb_log_files_in_group = 4innodb_log_file_size = 1Ginnodb_log_buffer_size = 200M#根据生产需要,调整pool sizeinnodb_buffer_pool_size = 2G#innodb_additional_mem_pool_size = 50M #deprecated in 5.6tmpdir = /usr/local/mysql/tmpinnodb_lock_wait_timeout = 1000#innodb_thread_concurrency = 0innodb_flush_log_at_trx_commit = 2innodb_locks_unsafe_for_binlog=1#innodb io features: add for mysql5.5.8performance_schemainnodb_read_io_threads=4innodb-write-io-threads=4innodb-io-capacity=200#purge threads change default(0) to 1 for purgeinnodb_purge_threads=1innodb_use_native_aio=on#case-sensitive file names and separate tablespaceinnodb_file_per_table = 1lower_case_table_names=1[mysqldump]quickmax_allowed_packet = 128M[mysql]no-auto-rehashdefault-character-set=utf8mb4[mysqlhotcopy]interactive-timeout[myisamchk]key_buffer_size = 256Msort_buffer_size = 256Mread_buffer = 2Mwrite_buffer = 2M
3.创建用户组及用户
[ptxbd@ptx-bigdata1 local]$ sudo groupadd -g 101 dba[ptxbd@ptx-bigdata1 local]$ sudo useradd -u 514 -g dba -G root -d /usr/local/mysql mysqladmin## 一般不需要设置mysqladmin的密码,直接从root或者LDAP用户sudo切换 #[root@hadoop39 local]# passwd mysqladmin
4.copy 环境变量配置文件至mysqladmin用户的home目录中,为了以下步骤配置个人环境变量(###important)
sudo cp /etc/skel/.* /usr/local/mysql
[caimh@cdh01 local]$ sudo cp /etc/skel/.* /usr/local/mysql
5.配置环境变量
sudo vi mysql/.bashrcexport MYSQL_BASE=/usr/local/mysqlexport PATH=
M
Y
S
Q
L
B
A
S
E
/
b
i
n
:
{MYSQL_BASE}/bin:
MYSQLBASE/bin:PATH
6.赋权限和用户组,切换用户mysqladmin,安装
[ptxbd@ptx-bigdata1 local]$ sudo chown mysqladmin:dba /etc/my.cnf[ptxbd@ptx-bigdata1 local]$ sudo chmod 640 /etc/my.cnf[ptxbd@ptx-bigdata1 local]$ sudo chown -R mysqladmin:dba /usr/local/mysql[ptxbd@ptx-bigdata1 local]$ sudo chmod -R 755 /usr/local/mysql
7.配置服务及开机自启动
cd /usr/local/mysql/#将服务文件拷贝到init.d下,并重命名为mysqlsudo cp support-files/mysql.server /etc/rc.d/init.d/mysql#赋予可执行权限sudo chmod +x /etc/rc.d/init.d/mysql#删除服务sudo chkconfig --del mysql#添加服务sudo chkconfig --add mysql
8.安装libaio及安装mysql的初始db
[ptxbd@ptx-bigdata1 mysql]$ sudo yum -y install libaio[ptxbd@ptx-bigdata1 mysql]$ sudo su - mysqladmin[mysqladmin@ptx-bigdata1 ~]$ bin/mysqld --defaults-file=/etc/my.cnf --user=mysqladmin --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --initialize
在初始化时如果加上 –initial-insecure,则会创建空密码的 root@localhost 账号,否则会创建带密码的 root@localhost 账号,密码直接写在 log-error 日志文件中
问题(可能多操作了几次)
解决方案:
通过/etc/my.conf找到datadir目录(/usr/local/mysql/data)
备份数据
Mv data data.bak
Rm –r data
Mkdir data
重新执行上面的命令
9.查看临时密码
[mysqladmin@ptx-bigdata1 data]$ pwd/usr/local/mysql/data[mysqladmin@ptx-bigdata1 data]$ cat hostname.err |grep password2020-02-24T14:46:47.691389Z 1 [Note] A temporary password is generated for root@localhost: 2ggfs0&%oczJ
10.登录及修改用户密码
[mysqladmin@ptx-bigdata1 data]$ service mysql startStarting MySQL… SUCCESS!#修改密码[mysqladmin@ptx-bigdata1 data]$ mysql -uroot -pmysql> alter user root@localhost identified by ‘Ptx@2020’;mysql> GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘cmh881290’;mysql> flush privileges;#重新启动[mysqladmin@ptx-bigdata1 data]$ service mysql restart
2.2.8 配置元数据库+用户+JDBC包
1.创建CDH元数据库 用户和amon的服务的库 用户
需要建的库有scm、amon、rman、hue、metastore、sentry、nav、navms、oozie
[ptxbd@ptx-bigdata1 mysql]$ sudo su - mysqladmin[mysqladmin@cdh01 ~]$ mysql -uroot Ptx@2020#CM元数据库create database cmf default character set utf8;grant all privileges on cmf.* to ‘cmf’@’%’ identified by ‘Ptx@2020’;#CMS的Activity Monitor对应数据库create database amon default character set utf8;grant all privileges on amon.* to ‘amon’@’%’ identified by ‘Ptx@2020’;flush privileges;#下面的可以待安装服务的时候在相应服务器数据库创建#hivecreate database hive default character set utf8;grant all privileges on hive.* to ‘hive’@’%’ identified by ‘Ptx@2020’;#ooziecreate database oozie default character set utf8;grant all privileges on oozie.* to ‘oozie’@’%’ identified by ‘Ptx@2020’;flush privileges;mysql> show databases;±-------------------+| Database |±-------------------+| information_schema || amon || cmf || mysql || performance_schema || sys |±-------------------+6 rows in set (0.00 sec)--------------------
2. 选择第一台部署amon的进程(配置mysql jdbc jar)
[ptxbd@cmaster01 ~]$ sudo mkdir -p /usr/share/java[ptxbd@cmaster01 cdh6.2.0]$ sudo tar -zxvf mysql-connector-java-5.1.46.tar.gz[ptxbd@cmaster01 mysql-connector-java-5.1.46]$ pwd/home/caimh/CDH6.2.0/mysql-connector-java-5.1.46[ptxbd@cmaster01 mysql-connector-java-5.1.46]$ sudo cp mysql-connector-java-5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar
***提示:如果用到CDH,mysql-jdbc的目录统一用/usr/share/java。另外,去掉mysql-connector-java-5.1.47-bin.jar版本号,改为mysql-connector-java.jar
2.3 CM Server&Agent安装(官方rpm包)
Server:
cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm
cloudera-manager-server-6.2.0-968826.el7.x86_64.rpm
sudo rpm -ivh cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm --nodeps --force
sudo rpm -ivh cloudera-manager-server-6.2.0-968826.el7.x86_64.rpm --nodeps --force
sudo rpm -ivh cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm --nodeps --force
第一台服务器安装完Server后,打开7180界面,不用动,继续安装其他机器Agent(包括第一台服务器)
Agent:
cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm
cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm
sudo rpm -ivh cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm --nodeps --force
sudo rpm -ivh cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm --nodeps --force
2.3.1 安装CM Server(第一台服务器)
#安装CM Server[ptxbd@[ptxbd@cmaster01 cdh6.2.0]$ sudo rpm -ivh cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm --nodeps --force[ptxbd@[ptxbd@cmaster01 cdh6.2.0]$ sudo rpm -ivh cloudera-manager-server-6.2.0-968826.el7.x86_64.rpm --nodeps --force#配置/etc/cloudera-scm-server/db.properties文件[ptxbd@[ptxbd@cmaster01 cdh6.2.0]$ cd /etc/cloudera-scm-server/[ptxbd@[ptxbd@cmaster01 cloudera-scm-server]$ lldb.propertieslog4j.properties[ptxbd@[ptxbd@cmaster01 cloudera-scm-server]$ sudo vi db.properties# The database type# Currently ‘mysql’, ‘postgresql’ and ‘oracle’ are valid databases. com.cloudera.cmf.db.type=mysql# The database host# If a non standard port is needed, use 'hostname:port’com.cloudera.cmf.db.host=cmaster01# The database namecom.cloudera.cmf.db.name=cmf# The database usercom.cloudera.cmf.db.user=cmf# The database user’s passwordcom.cloudera.cmf.db.password=Ptx@2020# The db setup type# After fresh install it is set to INIT# and will be changed post config.# If scm-server uses Embedded DB then it is set to EMBEDDED# If scm-server uses External DB then it is set to EXTERNAL com.cloudera.cmf.db.setupType=EXTERNAL#启动Server服务 --启动server服务,1~2分钟[ptxbd@[ptxbd@cmaster01 cloudera-scm-server]$ sudo service cloudera-scm-server startRedirecting to /bin/systemctl start cloudera-scm-server.service
第一台服务器安装完Server后,访问:http://主机IP(hostname):7180,若可以访问(用户名、密码:admin),则安装成功,继续安装其他机器Agent(包括第一台服务器)
2.3.2 安装CM Agent
拷贝 cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm和cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm到所有 Server、Agent 节点
#远程拷贝rpm文件到其他服务器(2-5主机)1)sudo scp cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm ptxbd@slave02:/home/ptxbd/cdh6.2.0/2)sudo scp cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm ptxbd@slave02:/home/ptxbd/cdh6.2.0/#安装Agent(所有节点,第一台主机安装Server时已经安装过daemos)1)sudo rpm -ivh cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm --nodeps --force2)sudo rpm -ivh cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm --nodeps --force#配置Agent(第一台可以不配)sudo vi /etc/cloudera-scm-agent/config.ini[General]# Hostname of the CMserver_host=cmaster01#启动Agent(所有节点)sudo service cloudera-scm-agent startsudo service cloudera-scm-agent restart(重启)#查看Agent状态sudo service cloudera-scm-agent status
查看Agent状态
访问:http://主机IP(hostname):7180,若可以访问(用户名、密码:admin),则安装成功。
Manager 启动成功需要等待一段时间,过程中会在数据库中创建对应的表需要耗费一些时间。
2.3.3 配置Parcel
1.配置本地源
1)Manager 节点mkdir -p /opt/cloudera/parcel-repochown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo将下载好的文件(CDH-5.4.0-1.cdh5.4.0.p0.27-el6.parcel、CDH-5.4.0-1.cdh5.4.0.p0.27-el6.parcel.sha、manifest.json)拷贝到该目录下(mv)2)Agent 节点(所有)创建目录/opt/cloudera/parcels,执行:mkdir -p /opt/cloudera/parcelschown cloudera-scm:cloudera-scm /opt/cloudera/parcels3)重启Server/Agentsudo service cloudera-scm-server restartsudo service cloudera-scm-agent restart(重启)
2.配置http源(建议,默认80端口,有的云服务80端口是关闭的,需要备案,如AWS)
#安装 HTTP 服务与 REPO(节点1)[ptxbd@cmaster01 cdh6.2.0]$ sudo yum install httpd#创建文件夹,存放cdh6的parcel包裹文件[ptxbd@cmaster01 cdh6.2.0]$ sudo mkdir /var/www/html/cdh6_parcel#移动parcel文件到/var/www/html/cdh6_parcel目录[ptxbd@cmaster01 cdh6.2.0]$ sudo mv CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel /var/www/html/cdh6_parcel/[ptxbd@cmaster01 cdh6.2.0]$ sudo mv CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.sha /var/www/html/cdh6_parcel/[ptxbd@cmaster01 cdh6.2.0]$ sudo mv manifest.json /var/www/html/cdh6_parcel/#启动服务[ptxbd@cmaster01 cdh6.2.0]$ sudo systemctl start httpd --开启服务[ptxbd@cmaster01 cdh6.2.0]$ sudo systemctl enable httpd --开机自启动#扩展[ptxbd@cmaster01 cdh6.2.0]$ sudo systemctl stop httpd --停止服务[ptxbd@cmaster01 cdh6.2.0]$ sudo systemctl restart httpd --重启服务[ptxbd@cmaster01 cdh6.2.0]$ sudo systemctl status httpd --查看服务状态
访问ptx-bigdata1/cdh6_parcel
问题:无法访问
Httpd默认端口是80
国内AWS使用S3或者ec2的80\8080\443端口都需要ICP备案,否则访问不了
方案1:备案80端口
方案2:修改httpd默认80端口
2.4 CDH集群安装
2.4.1 CM集群配置
参考:https://blog.youkuaiyun.com/qq_40127822/article/details/84441869
1.WELCOME
2.Accept License
3.Select Edition
4.Welcome (Add Cluster - Installation)
5.Specify Hosts
主机是自己规划安装agent的主机
6.Select Repository
删除远程parcel存储库,使用parcel本地源
7.Install Parcels
8.Inspect Hosts
***问题(3个问题)
问题1:减少集群使用交换内存
swappiness 设置值的区间在 0~100 之间,swap 即交换空间,作用类似于 Windows 中的虚拟内存,也就是当物理内存不足时,将硬盘上的 swap 分区当做内存来使用。但是,由于磁盘的读写速率与内存相比差太多,一旦发生大量交换,系统延迟就会增加,甚至会造成服务长期不可用,这对于大数据集群而言是致命的。vm.swappiness 参数用于控制内核对交换空间的使用积极性,默认是 60。值越高,就代表内核越多地使用交换空间。对于内存较大的 CDH 集群,我们一般将这个值设为 0 或 1。0 表示只有当可用物理内存小于最小阈值 vm.min_free_kbytes 时才使用交换空间,1 则表示最低限度地使用交换空间。
1、所有主机运行以下三条命令
sysctl -w vm.swappiness=0
echo ‘vm.swappiness=0’ >> /etc/sysctl.conf
sysctl -p
问题2:大页面
1、所有主机输入以下命令
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
2、所有主机的/etc/rc.local 中也需要加入这两条命令
vi /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
问题3:暂时忽略
2.4.2 大数据组件安装
2.4.2.1安装HDFS&YARN
1.Select Services
先自定义安装HDFS和Yarn组件(先以通为主)
2.自定义分配角色
3.数据库设置
4.审核更改
5.命令详细信息
*****内网放开所有端口
6.汇总
调整后,一切正常,变绿了
2.4.2.2安装Zookeeper服务
1.添加服务
选择zookeeper服务
自定义角色分配
4.审核更改
4.命令行详细信息
5.汇总
2.4.2.2安装Hive服务
参考:http://www.cloudera.com/documentation/manager/5-0-x/Cloudera-Manager-Managing-Clusters/cm5mc_hive_service.html#xd_583c10bfdbd326ba-204beb9-13ef1573a9e–7ff6__section_gmq_nq5_hl
3.数据库配置
报错1:JDBC driver cannot be found. Unable to find the JDBC database jar on host : ptx-bigdata2
解决方案
#ptx-bigdata2主机创建目录/usr/share/java,并修改属主[ptxbd@ptx-bigdata2 share]$ sudo mkdir java[ptxbd@ptx-bigdata2 share]$ sudo chown ptxbd:ptxbd java/[ptxbd@ptx-bigdata2 java]$ pwd/usr/share/java#scp拷贝(从主机1拷贝)[ptxbd@ptx-bigdata1 mysql-connector-java-5.1.47]$ sudo scp mysql-connector-java-5.1.47-bin.jar ptxbd@ptx-bigdata2:/usr/share/java/mysql-connector-java.jar
重新连接成功
4.审核更改(默认)
5.命令详细信息
6.汇总
2.4.2.3 安装Oozie服务
1.选择安装服务
2.自定义角色分配
3.数据库设置
4.审核修改(默认)
5.命令详细信息
6.汇总
2.4.2.4安装Sqoop
参考:https://blog.youkuaiyun.com/zimiao552147572/article/details/88322724
1.选择服务
2.自定义角色分配
3.审核修改(默认)
4.命令详细信息
5.汇总
2.4.2.5 安装Spark
1.选择服务
2.自定义角色分配
3.审核修改
4.命令详细信息
5.汇总
2.4.2.6 Hue安装
选择服务
自定义角色分配
数据库设置
安装过程中出现问题,见问题3
命令详细信息
汇总
问题
问题参考:https://blog.youkuaiyun.com/weixin_43840194/article/details/89555023
HUE =Hadoop User Experience(hadoop用户体验),开源的Apache Hadoop UI系统。基于Python Web框架Django实现的。通过使用Hue我们可以在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据。
问题:
启动hue web ui报错:Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found (code THRIFTTRANSPORT): TTransportException(‘Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found’,)
解决方案:参考:https://blog.youkuaiyun.com/redhat1986/article/details/89953073
1.在hue所在服务器执行
yum install cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi
或者
sudo yum install apache-maven ant asciidoc cyrus-sasl-devel cyrus-sasl-gssapi gcc gcc-c++ krb5-devel libxml2-devel libxslt-devel make mysql mysql-devel openldap-devel python-devel sqlite-devel gmp-devel
2.在CDH中重启hue
2.4.2.7 安装Oozie
oozie本质就是一个作业协调工具(底层原理是通过将xml语言转换成mapreduce程序来做,但只是在集中map端做处理,避免shuffle的过程。)
Oozie的工作流必须是一个有向无环图,实际上Oozie就相当于Hadoop的一个客户端,当用户需要执行多个关联的MR任务时,只需要将MR执行顺序写入workflow.xml,然后使用Oozie提交本次任务,Oozie会托管此任务流。
参考:
https://blog.youkuaiyun.com/TNTZS666/article/details/81915820?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
2.4.3 问题
问题1:
Hive 未配置为使用 Spark 服务。如果将 Hive 作业提交到 Spark 执行引擎,这些作业不会正确运行。为确保 Hive on Spark 作业正确运行,请配置 Spark On YARN 服务属性
解决方案:点击Spark On YARN Service,选择hive运行引擎Spark-2
问题2:
Port conflict detected: 18088 (History Server WebUI Port) is also used by: History Server (ptx-bigdata1).
原因是CM安装了2个版本的Spark/Spark-2,服务端口冲突。
解决方案修改了低版本Spark的端口号
问题3:安装hue,数据库连接报错Unexpected error. Unable to verify database connection
1.查看日志/var/log/cloudera-scm-server/ cloudera-scm-server.log报错是:ImportError: libxslt.so.1: cannot open shared object file: No such file or directory
原因分析:是centos缺少库文件,执行如下命令即可
解决方案:在安装hue的服务器上执行命令
yum install krb5-devel cyrus-sasl-gssapi cyrus-sasl-deve libxml2-devel libxslt-devel mysql mysql-devel openldap-devel python-devel python-simplejson sqlite-devel
在hue上配置Mysql的时候,出现的错误:
发生服务器错误: Error loading MySQLdb module: libmysqlclient.so.18: cannot open shared object file: No such file or directory
问题原因:
这个错误出现的原因是找不到 libmysqlclient.so.18 这个文件,根本原因是,一般我们使用的mysql都是自己从新安装的,不是系统自带的,所以在我们安装我们自己的mysql的时候,会把删除原来的mysql,此时会连带这删掉这个文件,32的目录是 /usr/lib/mysql/,64位的为 /usr/lib64/mysql/下面有这个文件。
1、解决问题的关键是,在找一台未装过mysql的服务器,然后把此文件夹下面的 libmysqlclient.so.18.0.0 文件拷贝到此服务器的这个目录中,然后做软连接。没有就下载
#sudo wget -O /usr/lib64/mysql/libmysqlclient.so.18 http://files.directadmin.com/services/es_7.0_64/libmysqlclient.so.18
2、然后 vi /etc/ld.so.conf 后面增加一条记录:/usr/lib64/mysql (libmysqlclient.so.18 和libmysqlclient.so.18.0.0所在目录)
3、运行 ldconfig 命令,让其生效。
问题4:HUE Load Balancer 启动失败
原因:日志显示没有安装httpd服务。
解决方案:安装httpd服务,安装完成后记得查看是否启动
yum -y install mod_ssl
yum -y install httpd
参考:https://blog.youkuaiyun.com/zhangshenghang/article/details/82705553
3 内存调优(后续)
参考:https://blog.youkuaiyun.com/adshiye/article/details/78840040?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task