第一章:CDH5.16.1导读及前置准备工作
第二章:CM中各项部署
第三章:部署完成后进行验证启动
在这里插入代码片若泽数据CDH部署文档:
链接:https://pan.baidu.com/s/1Ta4f_D72ZTPQO9oUMJiHFg
提取码:plr0
1、 MySQL离线部署 作为元数据
2、CM离线部署 tar 闭源 cloudera公司核心产品(是主从架构,server agent)
3、Parcel文件离线源部署 就相当于如下这些集成的压缩文件hdfs、yarn、hive、hbase、zk
网络和安全组固定不需要改变。
把文件上传到Hadoop002,Hadoop003机器上。
scp -r /home/hadoop/app 172.19.171.27:/home/hadoop/
所有部署的软件包都在如下:
链接:https://pan.baidu.com/s/1cAFeMJN4bZi1UBgxopIsRA
提取码:py9j
把第一台的软件分别传输到hadoop002、hadoop003机器上:
1、传输到hadoop002机器上,注意使用内网IP,输入yes和密码进行传输:
2、传输到hadoop003机器上,同样使用内网IP
3.1、hosts文件
SecureCRT上设置所有节点的hosts文件,view --> Command(Chat) window,右键下面的对话框,选择Send Commands to All Sessions.
> 在root用户下进行
> vi /etc/hosts
> 快捷键shift+g跳转到最后一行,shift+$跳转到最后一行行尾。
添加如下映射关系:
此处配置的是阿里云内网:
172.19.171.26 hadoop001
172.19.171.25 hadoop002
172.19.171.27 hadoop003
测试:能够ping通就说明没问题:
[root@hadoop002 ~]# ping hadoop001
PING hadoop001 (172.19.171.36) 56(84) bytes of data.
64 bytes from hadoop001 (172.19.171.36): icmp_seq=1 ttl=64 time=0.285 ms
64 bytes from hadoop001 (172.19.171.36): icmp_seq=2 ttl=64 time=0.204 ms
64 bytes from hadoop001 (172.19.171.36): icmp_seq=3 ttl=64 time=0.168 ms
64 bytes from hadoop001 (172.19.171.36): icmp_seq=4 ttl=64 time=0.155 ms
1、在生产上如何限制IP网段,我们需要通过公网IP访问,我们百度输入IP(使用宽带的IP地址),在安全组规则中配置就行
2、内部服务器,J总公司防火墙是关闭的,IDC环境,先通过VPN,再通过跳板机,本身集群也有防火墙硬件。
>进入root用户下:
>systemctl stop firewalld 关闭防火墙
>systemctl disable firewalld 禁止防火墙
>iptables -L 查看防火墙规则
>iptables -F 清空防火墙规则
1、使用root用户,vi编辑/etc/selinux/config文件:
[root@hadoop003 ~]# vi /etc/selinux/config
SELINUX=disabled
2、检查selinux的设置是否是disabled,如果不是则修改为disabled,且机器需要重启才能生效。
[root@hadoop001 ~]# timedatectl --help
timedatectl [OPTIONS...] COMMAND ...
Query or change system time and date settings.
-h --help Show this help message
--version Show package version
--no-pager Do not pipe output into a pager
--no-ask-password Do not prompt for password
-H --host=[USER@]HOST Operate on remote host
-M --machine=CONTAINER Operate on local container
--adjust-system-clock Adjust system clock when changing local RTC mode
Commands:
status Show current time settings
set-time TIME Set system time
set-timezone ZONE Set system time zone
list-timezones Show known time zones
set-local-rtc BOOL Control whether RTC is in local time
set-ntp BOOL Control whether NTP is enabled
[root@hadoop001 ~]# timedatectl
Local time: Tue 2019-09-24 22:54:05 CST
Universal time: Tue 2019-09-24 14:54:05 UTC
RTC time: Tue 2019-09-24 22:54:04
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: yes
DST active: n/a
Warning: The system is configured to read the RTC time in the local time zone.
This mode can not be fully supported. It will create various problems
with time zone changes and daylight saving time adjustments. The RTC
time is never updated, it relies on external facilities to maintain it.
If at all possible, use RTC in UTC by calling
'timedatectl set-local-rtc 0'.
1、三个节点都安装ntp服务:
2、hadoop001作为时间同步的主节点,hadoop002~hadoop003时间同步的从节点
1、编辑这个文件 vi /etc/ntp.conf
2、标准的配置如下所示,进入这个网址:https://www.ntppool.org/zone/asia:通过外网来保证的时钟同步,如果我们不能访问外网怎么操作呢,继续添加:
#time
server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 3.asia.pool.ntp.org
//当我们的外部时钟不能使用的时候,使用的是本地的时间
server 127.127.1.0 iburst local clock
//时钟同步老大允许哪个网段的小弟来同步我们的时间,此处是内网,172.19.171.0来表示这个网段,不行再进行测试,nomodify是指允许哪些节点来访问的;不行的话再进行调整。
restrict 172.19.171.0 mask 255.255.255.0 nomodify
3、开始验证:
4、在hadoop002机器下:使用命令:./usr/sbin/ntpdate hadoop001
[root@hadoop ~]# /usr/sbin/ntpdate hadoop001
25 Sep 09:42:10 ntpdate[2175]: adjust time server 172.19.171.36 offset -0.005928 sec
注意:在云主机中,时区和时钟同步可以不需要做;
如果是公司机器、虚拟机,非云主机的话是需要做时间同步的(即使布置到同一个机架上也是需要做的)。
生产场景:我们不可能一直使用这个命令:/usr/sbin/ntpdate hadoop001,我们分别进入到hadoop002、hadoop003,都进行如下编辑:
⽂档链接:https://github.com/Hackeruncle/MySQL
视频链接:https://pan.baidu.com/s/1jdM8WeIg8syU0evL1-tDOQ 密码:whic
hadoop001:mysqladmin:/usr/local/mysql/data:>cat hostname.err |grep password
2019-09-25T03:12:47.121122Z 1 [Note] A temporary password is generated for root@localhost: uXvFWsJe,8rk
2019-09-25T03:14:11.570878Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
hadoop001:mysqladmin:/usr/local/mysql/data:>
1、事先创建db用户
1、分别创建cmf、amon两个数据库:
create database cmf DEFAULT CHARACTER SET utf8;
create database amon DEFAULT CHARACTER SET utf8;
2、赋予cmf用户对于cmf数据库下所有的都能操作:
grant all on cmf.* TO 'cmf'@'%' IDENTIFIED BY 'Ruozedata123456!';
grant all on amon.* TO 'amon'@'%' IDENTIFIED BY 'Ruozedata123456!';
3、刷新权限:
flush privileges;
2、小技巧:查看MySQL中创建数据库的语句:
mysql> show create database mysql;
+----------+------------------------------------------------------------------+
| Database | Create Database |
+----------+------------------------------------------------------------------+
| mysql | CREATE DATABASE `mysql` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+------------------------------------------------------------------+
1 row in set (0.00 sec)
1、进入到这个目录:/root/cdh-5.16.1
2、级联创建文件夹:mkdir -p /usr/share/java
3、拷贝mysq-jar包到/usr/share/java这个路径下:
[root@hadoop001 cdh-5.16.1]# cp mysql-connector-java-5.1.47.jar /usr/share/java/mysql-connector-java.jar
我们的cmf和amon都要部署再hadoop001节点上,那么此节点就要部署jdbc的jar包。
注意:千万不要说上生产了,mysql在其它节点,进程也在其它机器,完蛋。
命令:
1、因为在/etc/hosts中文件做了内网ip和hostname的映射,所以可以直接使用hadoop002、hadoop003
scp cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz hadoop002:/root/cdh-5.16.1
scp cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz hadoop003:/root/cdh-5.16.1
第一步:
1、三台机器统一创建目录:mkdir /opt/cloudera-manager,这是cdh部署默认的路径
2、统一把cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz文件解压到/opt/cloudera-manager中,三台机器同时进行:
[root@hadoop001 cdh-5.16.1]# cd /opt/cloudera-manager/
[root@hadoop001 cloudera-manager]# ll
total 8
drwxr-xr-x 4 1106 4001 4096 Nov 21 2018 cloudera
drwxr-xr-x 9 1106 4001 4096 Nov 21 2018 cm-5.16.1
3、进行agent配置:
4、server机器只有一台,我们去修改Hadoop001机器中的server配置:
# 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=hadoop001
# 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=960210
# If scm-server uses External DB then it is set to EXTERNAL
com.cloudera.cmf.db.setupType=EXTERNAL
5、创建它默认的cloudera-scm用户:
useradd --system --home=/opt/cloudera-manager/cm-5.16.1/run/cloudera-scm-server/ --no-create-home --shell=/bin/false cloudera-scm
6、修改文件夹的用户及用户组,3台机器一起修改:
1、级联创建离线元源存储目录:
2、移动如下三个文件至离线源存储目录:
[root@hadoop001 parcel-repo]# pwd
/opt/cloudera/parcel-repo
[root@hadoop001 parcel-repo]# ll
total 2077720
-rw-r--r-- 1 root root 2127506677 Jun 18 16:52 CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel
-rw-r--r-- 1 root root 41 Jun 18 16:41 CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1
-rw-r--r-- 1 root root 66538 Jun 18 16:40 manifest.json
3、移动的时候需要把它重命名,把1去掉:
[root@hadoop001 parcel-repo]# mv CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1 CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha
4、查看包裹文件有没有损坏:
[root@hadoop001 parcel-repo]# ll
total 2077720
-rw-r--r-- 1 root root 2127506677 Jun 18 16:52 CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel
-rw-r--r-- 1 root root 41 Jun 18 16:41 CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha
-rw-r--r-- 1 root root 66538 Jun 18 16:40 manifest.json
[root@hadoop001 parcel-repo]# cat CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha
703728dfa7690861ecd3a9bcd412b04ac8de7148
[root@hadoop001 parcel-repo]# /usr/bin/sha1sum CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel
703728dfa7690861ecd3a9bcd412b04ac8de7148 CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel
1、这个包裹文件需要解压:我们要在所有节点创建文件夹
2、这些节点创建完文件夹后,修正用户、用户组权限:
第一步:
2019-09-25 14:22:47,983 INFO WebServerImpl:org.mortbay.log: jetty-6.1.26.cloudera.4
2019-09-25 14:22:48,047 INFO WebServerImpl:org.mortbay.log: Started [email protected]:7180
2019-09-25 14:22:48,047 INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.
再去三台机器上一起启动agent:
[root@hadoop002 opt]# cd /opt/cloudera-manager/cm-5.16.1/etc/init.d
[root@hadoop002 init.d]# ./cloudera-scm-agent start
Starting cloudera-scm-agent: [ OK ]
[root@hadoop002 init.d]# ./cloudera-scm-agent status
cloudera-scm-agent (pid 11688) is running...
1、我们使用免费版
2、继续,思考支持的操作系统、数据库、jdk
3、选择当前管理的主机,全部勾选;如果部署过程中缺失机器,去到那台机器上排查问题,然后问题解决后,点击back --> 再点击continue。
4、此时已经部署好了,点击图中的更多选项
5、点击Continue后,一瞬间是100%,就是部署的没有问题;剩下三个是根据集群的网络情况来分发的。
注意:以后部署过程中,如果某个节点夯住了,就需要慢慢等到;是在慢,点击back,再continue即可。
6、这个问题解决:
[root@hadoop002 init.d]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
[root@hadoop002 init.d]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
7、在集群设置中,我们选择自定义服务,选择hdfs、zookeeper、yarn;千万别搞个all service。
8、此处我配置的主要节点机器是hadoop002,datanode三台机器都要选择;activity Monitor要选择hadoop002,事先mysql-jar包已经准备好了在hadoop002上;nodemanager的进程和datanode的进程在一台机器上:数据本地化的概念;zookeeper在生产上最低是3台机器。
9、集群当中数据库设置:
如果此处不是successful,一般会存在三个问题:%、jdbc jar包、创建用户时没有刷新权限.
10
很神奇的一点是:我的主要机器它给我识别成了hadoop002,其实数据库是在hadoop001中,但是我又在hadoop002机器上添加了mysql-connect-jar包,然后把hadoop002修改为hadoop001然后就好了.
12、默认的这些配置都不需要变更:服务器分为根目录磁盘和专门用作数据存储的磁盘,或者多个磁盘,使用逗号分隔即可。
CDH的关键是遇到error如何解决?
CDH机器上不需要ssh无密码认证关系。