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部署。通过直观的用户界面快速部署,配置和监控群集 - 完成滚动升级,备份和灾难恢复以及可定制警报。
企业大数据平台的建设和运营无疑是重中之重,这也正成为企业信息化建设的核心任务和目标。通过构建企业大数据平台,对企业大规模数据进行科学高效的管理、分析、挖掘、监控、可视化,为公司内部产品的策划、运营、营销、财务、决策等提供科学精确的数据支撑,提高企业运营效率、最大化释放数据价值。
cloudera manager有四大功能:
• 管理:对集群进行管理,如添加、删除节点等操作。
• 监控:监控集群的健康情况,对设置的各种指标和系统运行情况进行全面监控。
• 诊断:对集群出现的问题进行诊断,对出现的问题给出建议解决方案。
• 集成:多组件进行整合。
cloudera manager的核心是管理服务器,该服务器承载管理控制台的Web服务器和应用程序逻辑,并负责安装软件,配置,启动和停止服务,以及管理上的服务运行群集。
Cloudera Manager Server由以下几个部分组成:
• Agent:安装在每台主机上。该代理负责启动和停止的过程,拆包配置,触发装置和监控主机。
• Management Service:由一组执行各种监控,警报和报告功能角色的服务。
• Database:存储配置和监视信息。通常情况下,多个逻辑数据库在一个或多个数据库服务器上运行。例如,Cloudera的管理服务器和监控角色使用不同的逻辑数据库。
• Cloudera Repository:软件由Cloudera 管理分布存储库。
• Clients:是用于与服务器进行交互的接口:
• Admin Console :基于Web的用户界面与管理员管理集群和Cloudera管理。
• API :与开发人员创建自定义的Cloudera Manager应用程序的API。
/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/* : 客户端配置文件目录。
https://www.cloudera.com/documentation.html
主机名 |
角色 |
IP地址 |
系统 |
用途 |
功能 |
配置 |
ptx-bigdata1 |
主节点 |
172.31.xxx.xx |
CentOS7.6 |
CM CMS MySQL Parcel |
CM CMS MySQL NN RM JHS SHS ZK |
8C/32G/500G |
ptx-bigdata2 |
从节点 |
172.31.xxx.xx |
CentOS7.6 |
Cloudera Agent |
DN NM SNN SPARK HMS HS2 Oozie Hue Sqoop ZK |
8C/32G/500G |
ptx-bigdata3 |
从节点 |
172.31.xxx.xx |
CentOS7.6 |
Cloudera Agent |
DN NM Journalnode ZK |
8C/32G/500G |
ptx-bigdata4 |
从节点 |
172.31.xxx.xxx |
CentOS7.6 |
Cloudera Agent |
DN NM Journalnode |
8C/32G/500G |
ptx-bigdata5 |
从节点 |
172.31.xxx.xxx |
CentOS7.6 |
Cloudera Agent |
DN NM Journalnode |
8C/32G/500G |
注意:Journalnode和ZooKeeper保持奇数个,最少不少于 3 个节点
无论是Hadoop相关组件还是cm本身都需要使用到数据库,cm默认会使用内嵌数据库,但是这种方式并不推荐在生产环节使用
新增用户ptxbd
#新增用户ptxbd
useradd ptxbd
uasswd ptxbd
ptxbd ALL=(ALL) NOPASSWD:ALL
ptxbd ALL=(ALL) NOPASSWD:/bin/whoami
#第一台服务器上执行
echo "172.31.xxx.xxx ptx-bigdata1" >> /etc/hosts
echo "172.31.xxx.xxx ptx-bigdata2" >> /etc/hosts
echo "172.31.xxx.xxx ptx-bigdata3" >> /etc/hosts
echo "172.31.xxx.xxx ptx-bigdata4" >> /etc/hosts
echo "172.31.xxx.xxx ptx-bigdata5" >> /etc/hosts
#因为所有主机的 hosts 文件都一致,为了减少重复工作使用,scp 命令拷贝到所有主机
scp /etc/hosts [email protected]:/etc/
#设置hostname
#分别进入集群中的每个主机,设置 hostname,需要注意的是 hostname 最好不好设置为大写,因为后续如果要开启 kerberos 的时候会报错!
hostnamectl set-hostname ptx-bigdata1
hostnamectl set-hostname ptx-bigdata2
hostnamectl set-hostname ptx-bigdata3
hostnamectl set-hostname ptx-bigdata4
hostnamectl set-hostname ptx-bigdata5
#在每台主机上输入 hostname 看输出的结果是否与主机相对应
Hostname
#重启服务器
#执行ssh-keygen -t rsa,三次Enter键
[ptxbd@ptx-bigdata1 ~]$ ssh-keygen -t rsa
[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 ptx-bigdata2
#验证
ssh ptx-bigdata2
#查看防火墙状态,注: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
vi /etc/selinux/config
将 SELINUX=enforcing 改为 SELINUX=disabled
[ptxbd@ptx-bigdata1 ~]$ sudo vi /etc/selinux/config
JDK 最好安装 1.8 的,因为 CDH6.0 以后 JDK 版本最低为 1.8
1)卸载openjdk
检查是否已经安装了jdk, java -verison
rpm -qa|grep java
rpm –e --nodeps xxxxxxxxx
(说明:qa:查询所有安装包 -e: 卸载 -nodeps:忽略依赖)
2)上传jdk安装包
#安装文件上传下载工具
[ptxbd@ptx-bigdata1 ~]$ sudo yum -y install lrzsz
#创建cdh6.2.0文件夹,安装包存放位置
[ptxbd@ptx-bigdata1 ~]$ mkdir cdh6.2.0
#查看上传的相关安装包
[ptxbd@ptx-bigdata1 cdh6.2.0]$ ll
CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel
CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.sha
cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm
cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm
cloudera-manager-server-6.2.0-968826.el7.x86_64.rpm
jdk-8u211-linux-x64.tar.gz
manifest.json
mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz
mysql-connector-java-5.1.47.tar.gz
#分发JDK到其他服务器上
[ptxbd@ptx-bigdata1 cdh6.2.0]$ scp jdk-8u211-linux-x64.tar.gz ptxbd@ptx-bigdata2:/opt/software/cdh6.2.0/
[ptxbd@ptx-bigdata1 cdh6.2.0]$ scp jdk-8u211-linux-x64.tar.gz ptxbd@ptx-bigdata3:/opt/software/cdh6.2.0/
[ptxbd@ptx-bigdata1 cdh6.2.0]$ scp jdk-8u211-linux-x64.tar.gz ptxbd@ptx-bigdata4:/opt/software/cdh6.2.0/
[ptxbd@ptx-bigdata1 cdh6.2.0]$ scp jdk-8u211-linux-x64.tar.gz ptxbd@ptx-bigdata5:/opt/software/cdh6.2.0/
3)解压安装包
#每个节点都创建/usr/java目录
sudo mkdir /usr/java/
#解压到每个节点/usr/java/目录下
sudo tar -zxvf jdk-8u211-linux-x64.tar.gz -C /usr/java/
#必须修正所属用户及用户组
sudo chown -R root:root /usr/java/jdk1.8.0_211
drwxr-xr-x 7 root root 4096 Apr 2 2019 jdk1.8.0_211
*****提示:切记必须修正JDK所属用户及用户组 chown -R root:root /usr/java/jdk1.8.0_211
4)配置环境变量/etc/profile
sudo vi /etc/profile
#Java配置
export JAVA_HOME=/usr/java/jdk1.8.0_211
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
5)刷新配置(重新加载)
source /etc/profile
6)检查是否安装成功
java -version
which java
主从 主和互联网同步时间,从节点与主节点同步
主主 每一台都和互联网同步时间
公司内部时钟服务器
1、环境准备
1)timedatectl查看时间各种状态:
[ptxbd@ptx-bigdata2 etc]$ 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: yes
NTP 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: yes
NTP 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.0
fudge 127.127.1.0 stratum8
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 ntpd
sudo systemctl enable ntpd
6.验证是否成功设置开机自启动
sudo systemctl list-unit-files |grep enabled | grep ntpd
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 = 3306
socket = /usr/local/mysql/data/mysql.sock
default-character-set=utf8mb4
[mysqld]
port = 3306
socket = /usr/local/mysql/data/mysql.sock
skip-slave-start
skip-external-locking
key_buffer_size = 256M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 4M
query_cache_size= 32M
max_allowed_packet = 16M
myisam_sort_buffer_size=128M
tmp_table_size=32M
table_open_cache = 512
thread_cache_size = 8
wait_timeout = 86400
interactive_timeout = 86400
max_connections = 600
# Try number of CPU's*2 for thread_concurrency
#thread_concurrency = 32
#isolation level and default engine
default-storage-engine = INNODB
transaction-isolation = READ-COMMITTED
server-id = 1739
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
pid-file = /usr/local/mysql/data/hostname.pid
#open performance schema
log-warnings
sysdate-is-now
binlog_format = ROW
log_bin_trust_function_creators=1
log-error = /usr/local/mysql/data/hostname.err
log-bin = /usr/local/mysql/arch/mysql-bin
expire_logs_days = 7
innodb_write_io_threads=16
relay-log = /usr/local/mysql/relay_log/relay-log
relay-log-index = /usr/local/mysql/relay_log/relay-log.index
relay_log_info_file= /usr/local/mysql/relay_log/relay-log.info
log_slave_updates=1
gtid_mode=OFF
enforce_gtid_consistency=OFF
# slave
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=4
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_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 slave
sync_binlog = 500
#for innodb options
innodb_data_home_dir = /usr/local/mysql/data/
innodb_data_file_path = ibdata1:1G;ibdata2:1G:autoextend
innodb_log_group_home_dir = /usr/local/mysql/arch
innodb_log_files_in_group = 4
innodb_log_file_size = 1G
innodb_log_buffer_size = 200M
#根据生产需要,调整pool size
innodb_buffer_pool_size = 2G
#innodb_additional_mem_pool_size = 50M #deprecated in 5.6
tmpdir = /usr/local/mysql/tmp
innodb_lock_wait_timeout = 1000
#innodb_thread_concurrency = 0
innodb_flush_log_at_trx_commit = 2
innodb_locks_unsafe_for_binlog=1
#innodb io features: add for mysql5.5.8
performance_schema
innodb_read_io_threads=4
innodb-write-io-threads=4
innodb-io-capacity=200
#purge threads change default(0) to 1 for purge
innodb_purge_threads=1
innodb_use_native_aio=on
#case-sensitive file names and separate tablespace
innodb_file_per_table = 1
lower_case_table_names=1
[mysqldump]
quick
max_allowed_packet = 128M
[mysql]
no-auto-rehash
default-character-set=utf8mb4
[mysqlhotcopy]
interactive-timeout
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_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/.bashrc
export MYSQL_BASE=/usr/local/mysql
export PATH=${MYSQL_BASE}/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下,并重命名为mysql
sudo 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 password
2020-02-24T14:46:47.691389Z 1 [Note] A temporary password is generated for root@localhost: 2ggfs0&%oczJ
10.登录及修改用户密码
[mysqladmin@ptx-bigdata1 data]$ service mysql start
Starting MySQL.. SUCCESS!
#修改密码
[mysqladmin@ptx-bigdata1 data]$ mysql -uroot -p
mysql> alter user root@localhost identified by 'cmh123';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'cmh123';
mysql> flush privileges;
#重新启动
[mysqladmin@ptx-bigdata1 data]$ service mysql restart
1.创建CDH元数据库 用户和amon的服务的库 用户
需要建的库有scm、amon、rman、hue、metastore、sentry、nav、navms、oozie
[ptxbd@ptx-bigdata1 mysql]$ sudo su - mysqladmin
[mysqladmin@cdh01 ~]$ mysql -uroot -pcmh123
#CM元数据库
create database cmf default character set utf8;
grant all privileges on cmf.* to 'cmf'@'%' identified by 'cmh123';
#CMS的Activity Monitor对应数据库
create database amon default character set utf8;
grant all privileges on amon.* to 'amon'@'%' identified by 'cmh123';
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@ptx-bigdata1 ~]$ sudo mkdir -p /usr/share/java
[caimh@cdh01 CDH6.2.0]$ sudo tar -zxvf mysql-connector-java-5.1.47.tar.gz
[caimh@cdh01 mysql-connector-java-5.1.47]$ pwd
/home/caimh/CDH6.2.0/mysql-connector-java-5.1.47
[caimh@cdh01 mysql-connector-java-5.1.47]$ sudo cp mysql-connector-java-5.1.47-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
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
#安装CM Server
[ptxbd@ptx-bigdata1 cdh6.2.0]$ sudo rpm -ivh cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm --nodeps --force
[ptxbd@ptx-bigdata1 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@ptx-bigdata1 cdh6.2.0]$ cd /etc/cloudera-scm-server/
[ptxbd@ptx-bigdata1 cloudera-scm-server]$ ll
db.properties
log4j.properties
[ptxbd@ptx-bigdata1 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=cdh01
# The database name
com.cloudera.cmf.db.name=cmf
# The database user
com.cloudera.cmf.db.user=cmf
# The database user's password
com.cloudera.cmf.db.password=cmh881290
# 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@ptx-bigdata1 cloudera-scm-server]$ sudo service cloudera-scm-server start
Redirecting to /bin/systemctl start cloudera-scm-server.service
第一台服务器安装完Server后,访问:http://主机IP(hostname):7180,若可以访问(用户名、密码:admin),则安装成功,继续安装其他机器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@ptx-bigdata2~5:/opt/software/cdh6.2.0/
2)sudo scp cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm ptxbd@ptx-bigdata2~5:/opt/software/cdh6.2.0/
#安装Agent(所有节点,第一台主机安装Server时已经安装过daemos)
1)sudo rpm -ivh cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm --nodeps --force
2)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 CM
server_host=ptx-bigdata1
#启动Agent(所有节点)
sudo service cloudera-scm-agent start
sudo service cloudera-scm-agent restart(重启)
#查看Agent状态
sudo service cloudera-scm-agent status
查看Agent状态
访问:http://主机IP(hostname):7180,若可以访问(用户名、密码:admin),则安装成功。
Manager 启动成功需要等待一段时间,过程中会在数据库中创建对应的表需要耗费一些时间。
1.配置本地源
1)Manager 节点
mkdir -p /opt/cloudera/parcel-repo
chown 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/parcels
chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
3)重启Server/Agent
sudo service cloudera-scm-server restart
sudo service cloudera-scm-agent restart(重启)
2.配置http源(建议,默认80端口,有的云服务80端口是关闭的,需要备案,如AWS)
#安装 HTTP 服务与 REPO(节点1)
[ptxbd@ptx-bigdata1 cdh6.2.0]$ sudo yum install httpd
#创建文件夹,存放cdh6的parcel包裹文件
[ptxbd@ptx-bigdata1 cdh6.2.0]$ sudo mkdir /var/www/html/cdh6_parcel
#移动parcel文件到/var/www/html/cdh6_parcel目录
[ptxbd@ptx-bigdata1 cdh6.2.0]$ sudo mv CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel /var/www/html/cdh6_parcel/
[ptxbd@ptx-bigdata1 cdh6.2.0]$ sudo mv CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.sha /var/www/html/cdh6_parcel/
[ptxbd@ptx-bigdata1 cdh6.2.0]$ sudo mv manifest.json /var/www/html/cdh6_parcel/
#启动服务
[ptxbd@ptx-bigdata1 cdh6.2.0]$ sudo systemctl start httpd --开启服务
[ptxbd@ptx-bigdata1 cdh6.2.0]$ sudo systemctl enable httpd --开机自启动
#扩展
[ptxbd@ptx-bigdata1 cdh6.2.0]$ sudo systemctl stop httpd --停止服务
[ptxbd@ptx-bigdata1 cdh6.2.0]$ sudo systemctl restart httpd --重启服务
[ptxbd@ptx-bigdata1 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端口
参考:https://blog.csdn.net/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.1安装HDFS&YARN
1.Select Services
先自定义安装HDFS和Yarn组件(先以通为主)
2.自定义分配角色
3.数据库设置
4.审核更改
5.命令详细信息
*****内网放开所有端口
6.汇总
调整后,一切正常,变绿了
2.4.2.2安装Zookeeper服务
1.添加服务
2.4.2.2安装Zookeeper服务
1.添加服务
2.自定义角色分配
4.审核更改
3.命令行详细信息
4.汇总
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
数据库配置
报错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
重新连接成功
命令详细信息
汇总
2.4.2.3 安装Oozie服务
1.选择安装服务
2.自定义角色分配
3.数据库设置
4.审核修改(默认)
5.命令详细信息
6.汇总
2.4.2.4安装Sqoop
参考:https://blog.csdn.net/zimiao552147572/article/details/88322724
2.4.2.5 安装Spark
2.4.2.6 Hue安装
数据库选择
安装过程中出现问题,见问题3
问题参考:https://blog.csdn.net/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.csdn.net/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
oozie本质就是一个作业协调工具(底层原理是通过将xml语言转换成mapreduce程序来做,但只是在集中map端做处理,避免shuffle的过程。)
Oozie的工作流必须是一个有向无环图,实际上Oozie就相当于Hadoop的一个客户端,当用户需要执行多个关联的MR任务时,只需要将MR执行顺序写入workflow.xml,然后使用Oozie提交本次任务,Oozie会托管此任务流。
参考:
https://blog.csdn.net/TNTZS666/article/details/81915820?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
问题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-simplejsonsqlite-devel
问题4:HUE Load Balancer 启动失败
原因:日志显示没有安装httpd服务。
解决方案:安装httpd服务,安装完成后记得查看是否启动
yum -y install mod_ssl
yum -y install httpd
参考:https://blog.csdn.net/zhangshenghang/article/details/82705553
参考:https://blog.csdn.net/adshiye/article/details/78840040?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task