CDH6.3.2安装

CDH6.3.2安装

第一章Cloudera Manager(CM)简介

1.1 CM简介

Cloudera Manager是一个拥有集群自动化安装、中心化管理、集群监控、报警功能的一个工具,使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到几人以内,极大的提高集群管理的效率。

目录

第一章Cloudera Manager(CM)简介

1.1 CM简介

1.2 CM架构

第二章 阿里云服务器准备

2.1 注册并登录阿里云账户

2.2 购买ECS云服务器

2.3 ECS升级配置及安全组修改

第三章 CM部署环境准备

3.1 shell工具连接服务器

3.2 修改实例中hosts文件

3.3 SSH免密登录

3.3.1生成公钥和私钥

3.3.2拷贝公钥

3.3.3配置所有免密登录

3.4 集群同步脚本

3.5 集群整体操作脚本

3.6 检查防火墙是否关闭

3.7 检查hostname是否配置成功

3.8 禁用SELinux mode

3.9 禁用透明大页配置

3.10 启用NTP服务(可选)

3.11 为hue安装python2.7服务

3.12 【了解】CDH平台权限与命令概览

3.13 【了解】CDH平台使用的端口概览

3.14 创建本地yum源

3.14.1 httpd服务安装

3.14.2 yum源工具安装

3.14.3导入cm资源包

3.14.4创建repo

3.14.5清除缓存并建立新的元数据缓存

第四章 CM及依赖组件安装

4.1 安装java

4.2 安装MySQL(使用官方方法安装)

4.2.1使用rpm的方式进行安装

4.2.2将InnoDB log files做备份

4.2.3修改/etc/my.cnf文件

4.2.4初始化MySQL

4.3 通过yum安装daemons,agent,server

4.4 配置本地Parcel存储库

4.5 启动cloudera-scm-server

第五章 CM集群部署

5.1 进入CM欢迎界面

5.2 勾选条款协议

5.3 选择免费版本进行部署

5.4 进入cluster部署欢迎界面

5.5 为集群命名

5.6 指定集群中的主机

5.7 填写cm库地址及选择CDH parcel包

5.8 JDK安装

5.9 输入root用户的密码

5.10 显示正在部署安装,页面暂时不可点击

5.11 分发parcel包并进入节点自动化部署

5.12 进入环境检查页面

5.13 组件选择页面

5.14 选择需要安装的服务及Host

5.15 配置数据库密码

5.16 初始参数配置

5.17 集群进入自动部署

5.18 安装部署完成

5.19 修改界面语言

5.20 对集群配置做优化和修改

第六章 参数配置

6.1 HDFS配置域名访问

6.2 设置物理核和虚拟核占比

6.3 修改单个容器下最大cpu申请资源

6.4 设置每个任务容器内存大小和单节点大小

6.5 关闭Spark动态分配资源参数

6.6 修改HDFS副本数和权限检查配置

6.7 设置容量调度器

6.8 修改hive-site.xml的配置

第一章Cloudera Manager(CM)简介

1.1 CM简介

1.2 CM架构

第二章 阿里云服务器准备

2.1 注册并登录阿里云账户

2.2 购买ECS云服务器

2.3 ECS升级配置及安全组修改

第三章 CM部署环境准备

3.1 shell工具连接服务器

3.2 修改实例中hosts文件

3.3 SSH免密登录

3.3.1生成公钥和私钥

3.3.2拷贝公钥

3.3.3配置所有免密登录

3.4 集群同步脚本

3.5 集群整体操作脚本

3.6 检查防火墙是否关闭

3.7 检查hostname是否配置成功

3.8 禁用SELinux mode

3.9 禁用透明大页配置

3.10 启用NTP服务(可选)

3.11 为hue安装python2.7服务

3.12 【了解】CDH平台权限与命令概览

3.13 【了解】CDH平台使用的端口概览

3.14 创建本地yum源

3.14.1 httpd服务安装

3.14.2 yum源工具安装

3.14.3导入cm资源包

3.14.4创建repo

3.14.5清除缓存并建立新的元数据缓存

第四章 CM及依赖组件安装

4.1 安装java

4.2 安装MySQL(使用官方方法安装)

4.2.1使用rpm的方式进行安装

4.2.2将InnoDB log files做备份

4.2.3修改/etc/my.cnf文件

4.2.4初始化MySQL

4.3 通过yum安装daemons,agent,server

4.4 配置本地Parcel存储库

4.5 启动cloudera-scm-server

第五章 CM集群部署

5.1 进入CM欢迎界面

5.2 勾选条款协议

5.3 选择免费版本进行部署

5.4 进入cluster部署欢迎界面

5.5 为集群命名

5.6 指定集群中的主机

5.7 填写cm库地址及选择CDH parcel包

5.8 JDK安装

5.9 输入root用户的密码

5.10 显示正在部署安装,页面暂时不可点击

5.11 分发parcel包并进入节点自动化部署

5.12 进入环境检查页面

5.13 组件选择页面

5.14 选择需要安装的服务及Host

5.15 配置数据库密码

5.16 初始参数配置

5.17 集群进入自动部署

5.18 安装部署完成

5.19 修改界面语言

5.20 对集群配置做优化和修改

第六章 参数配置

6.1 HDFS配置域名访问

6.2 设置物理核和虚拟核占比

6.3 修改单个容器下最大cpu申请资源

6.4 设置每个任务容器内存大小和单节点大小

6.5 关闭Spark动态分配资源参数

6.6 修改HDFS副本数和权限检查配置

6.7 设置容量调度器

6.8 修改hive-site.xml的配置


1.2 CM架构


第二章 阿里云服务器准备

本次我们选择使用阿里云服务器进行项目部署,以便于以后更好的适应云开发环境。

2.1 注册并登录阿里云账户

阿里云网址为:https://aliyun.com/,注册账号并登录。

2.2 购买ECS云服务器

1.点击右上角控制台

2.打开侧边栏,点击云服务器ECS

3.点击左侧实例,然后点击右上角创建实例。

4.选择付费模式和地域可用区

注意:包年包月一般是企业中会使用。学习阶段可以选择按量付费或者抢占式实例。按量付费稍微贵一些,按照使用时长进行计费。抢占式实例有被释放的风险,但一般情况下不会出现,且抢占式实例远远低于前两种的价格,建议选择,但抢占式实例不能更改或升级实力规格。

(后两种模式在停机不收费的情况下,公网IP可能会被收回,下次启动可能会改变,这里需要注意。)

5.选择服务器配置和系统

6.选择磁盘类型及大小

7.然后点击下一步

如果提示余额不足,请先充值并保证阿里云账户余额大于100元。

8.网络和安全组配置

带宽我们选择按用量付费,并把带宽设置为100Mbps。完成后点击下一步:系统设置。

9.系统配置

10.分组设置

全部使用默认即可,或根据业务需求分组或者分配标签

11.确认订单,创建实例

12.创建成功之后,点击管理控制台进入控制台管理界面。

2.3 ECS升级配置及安全组修改

1.停止实例

勾选hadoop102,点击停止按钮。

2.更改实例规格

可点击右上方进行实例状态刷新,等到hadoop102状态变为“已停止”后,点击更改实例规格。

我们选择16G及以上内存,点击立即变更。

3.重启升级后的hadoop102,并更改网络安全组配置

4.点击配置规则

CDH中需要放行的端口如下:

端口号

组件

备注

7180

CDH web UI

9870

HDFS web UI

8088

Yarn web UI

19888

Historyserver web UI

8080

8888

Hue(未优化)

8889

Hue(优化)

3306

MySQL

6379

Redis

9092

kafka

2181

zk

4040

Spark

18088

Spark

10000

Hiveserve2

10002

Hive

11000

Oozie

51000

Sentry

8020

HDFS

可点击手动添加进行配置,也可使用文件进行导入。

可使用该json文件进行导入:(右键点击下方文件保存到本地)

https://cdh-sgg.oss-cn-shenzhen.aliyuncs.com/fileshare/ecs_cn-shenzhen.json

点击左侧安全组内实例列表,确保三个实例都在安全组内。如果没有在同一个安全组内,通过点击右上角批量导入实例进行添加。


第三章 CM部署环境准备

3.1 shell工具连接服务器

打开远程连接工具(如Xshell、Finalshell等)并连接至三个实例。我们在访问公网资源时候需要使用实例的公网IP。

点击公网IP旁的复制按钮进行复制,并复制到远程连接工具的主机名处进行连接。

如下图,已经成功连接三台实例。

3.2 修改实例中hosts文件

[root@hadoop102 ~]# vim /etc/hosts
# 在文件末尾添加每个实例的内网IP及对应的hostname

172.17.79.117   hadoop102       hadoop102
172.17.79.116   hadoop103       hadoop103
172.17.79.118   hadoop104       hadoop104

注意:三个实例都需要配置

注意:这里每个人的IP不一样,填写的是内网IP,做完后ping一下看是否能ping通,如果能ping通表示配置成功。

(如果想要在Windows环境中使用hostname访问阿里云主机,需要配置Windows本地hosts)

3.3 SSH免密登录

配置hadoop102、hadoop103对hadoop102、hadoop103、hadoop104三台服务器免密登录。

CDH服务开启与关闭是通过server和agent来完成的,所以这里不需要配置SSH免密登录,但是为了我们分发文件方便,在这里我们也配置SSH。

3.3.1生成公钥和私钥

执行ssh-keygen -t rsa并敲三次回车,会在我们的/root/.ssh目录下生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

[root@hadoop102 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:hEswnEtDovBk+B44OAWCoECEFQAJ1svs8J7z6SiXJWY root@hadoop102
The key's randomart image is:
+---[RSA 2048]----+
|^XB++.           |
|@=.o=o .         |
|+++..oo .        |
|=.o+.. o         |
| ++.  . S        |
|  .E .           |
|  + =            |
| . *. .          |
|  o.++           |
+----[SHA256]-----+

【了解】注意,由于Linux系统中名称首位为.的文件和文件夹会被隐藏,因此使用ll -a命令才可显式地看到".ssh"文件夹

[root@hadoop102 ~]# ll -a
总用量 48
dr-xr-x---.  5 root root 4096 6月   8 10:58 .
dr-xr-xr-x. 18 root root 4096 6月   8 10:25 ..
-rw-r--r--.  1 root root   18 12月 29 2013 .bash_logout
-rw-r--r--.  1 root root  176 12月 29 2013 .bash_profile
-rw-r--r--.  1 root root  176 12月 29 2013 .bashrc
drwx------   3 root root 4096 4月  20 12:07 .cache
-rw-r--r--.  1 root root  100 12月 29 2013 .cshrc
drwxr-xr-x   2 root root 4096 4月  20 12:07 .pip
-rw-r--r--   1 root root  206 6月   8 10:25 .pydistutils.cfg
drwx------   2 root root 4096 6月   8 11:34 .ssh
-rw-r--r--.  1 root root  129 12月 29 2013 .tcshrc
-rw-------   1 root root  633 6月   8 10:58 .viminfo
[root@hadoop102 ~]# cd .ssh/
[root@hadoop102 .ssh]# ll
总用量 8
-rw------- 1 root root    0 6月   8 10:25 authorized_keys
-rw------- 1 root root 1675 6月   8 11:34 id_rsa
-rw-r--r-- 1 root root  396 6月   8 11:34 id_rsa.pub

3.3.2拷贝公钥

将公钥拷贝到要免密登录的目标机器上

注意:需要输入yes和对应实例的root密码,一共输入9遍

[root@hadoop102 ~]# ssh-copy-id hadoop102
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host 'hadoop102 (172.17.79.117)' can't be established.
ECDSA key fingerprint is SHA256:GChtzRnEIaBP+3unV+N4e8DReGYFNsZtP1WYq7BWspk.
ECDSA key fingerprint is MD5:48:1e:9d:a3:d7:e4:9b:be:4a:89:b6:a9:18:88:ff:e7.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@hadoop102's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'hadoop102'"
and check to make sure that only the key(s) you wanted were added.
[root@hadoop102 ~]# ssh-copy-id hadoop103
[root@hadoop102 ~]# ssh-copy-id hadoop104

3.3.3配置所有免密登录

重复1和2的操作,配置hadoop103对hadoop102、hadoop103、hadoop104三台服务器免密登录。

3.4 集群同步脚本

1.在/root目录下创建bin目录,并在bin目录下创建文件xsync,文件内容如下:

[root@hadoop102 ~]# mkdir bin
[root@hadoop102 ~]# cd bin/
[root@hadoop102 ~]# vim xsync

#!/bin/bash

#1. 判断参数个数

if [ $# -lt 1 ]

then

  echo Not Enough Arguement!

  exit;

fi

#2. 遍历集群所有机器

for host in hadoop102 hadoop103 hadoop104

do

  echo ====================  $host  ====================

  #3. 遍历所有目录,挨个发送

  for file in $@

  do

    #4. 判断文件是否存在

    if [ -e $file ]

    then

      #5. 获取父目录

      pdir=$(cd -P $(dirname $file); pwd)

      #6. 获取当前文件的名称

      fname=$(basename $file)

      ssh $host "mkdir -p $pdir"

      rsync -av $pdir/$fname $host:$pdir

    else

      echo $file does not exists!

    fi

  done

done

2.修改脚本xsync具有执行权限

[root@hadoop102 bin]# chmod u+x xsync

3.5 集群整体操作脚本

1.在/root/bin目录下创建脚本xcall.sh

[root@hadoop102 bin]# vim xcall.sh

2.在脚本中编写如下内容

#! /bin/bash

for i in hadoop102 hadoop103 hadoop104
do
        echo --------- $i ----------
        ssh $i "$*"
done

3.修改脚本执行权限

[root@hadoop102 bin]# chmod u+x xcall.sh

4.将/etc/profile文件追加到~/.bashrc后面

注:修改.bashrc文件,这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,这里是针对某一个特定的用户,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bashrc文件就可以了

注:登陆 linux 启动 bash时首先会去读取 ~/.bash_profile文件,在.bash_profile文件中会显式调用.bashrc,这样 ~/.bashrc也就得到执行了

这里请不要用xcall.sh 脚本去执行,分别手动进行执行,不然会出错

[root@hadoop102 module]# cat /etc/profile >> ~/.bashrc
[root@hadoop103 module]# cat /etc/profile >> ~/.bashrc
[root@hadoop104 module]# cat /etc/profile >> ~/.bashrc

5.测试

[root@hadoop102 ~]# xcall.sh jps
--------- hadoop102 ----------
bash: jps: 未找到命令
--------- hadoop103 ----------
bash: jps: 未找到命令
--------- hadoop104 ----------
bash: jps: 未找到命令

3.6 检查防火墙是否关闭

6.3.x 官方部署文档(英文)Before You Install | 6.3.x | Cloudera Documentation

如果已经关闭,则进行下一步;如果未关闭,则先备份当前防火墙规则并关闭防火墙

[root@hadoop102 ~]# sudo systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

此处是防火墙未关闭的情况需要执行的命令

# 保存当前防火墙规则
sudo iptables-save > ~/firewall.rules
# 禁用防火墙
sudo systemctl disable firewalld
# 停止防火墙
sudo systemctl stop firewalld

3.7 检查hostname是否配置成功

# 使用命令 hostname 或者 hostnamectl status进行查看

[root@hadoop102 ~]# hostname
hadoop102

[root@hadoop102 ~]# hostnamectl status
   Static hostname: hadoop102
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 20210420115402141394707303550493
           Boot ID: bc46d04f68fe429c932864648ba937c7
    Virtualization: kvm
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-1160.24.1.el7.x86_64
      Architecture: x86-64

3.8 禁用SELinux mode

注:安全增强的Linux (SELinux)允许通过策略设置访问控制。如果在部署CDH时遇到困难,请在将CDH部署到集群之前,在每个主机上将SELinux设置为permissive模式。

(关于什么是SELinux,不是课程重点,感兴趣的同学可以自行查询。这里只需要按照下面命令进行配置,即可在后面环境检查时候顺利通过。)

# 使用命令getenforce检查当前SELinux mode状态

[root@hadoop102 ~]# getenforce
Disabled

如果输出结果为Permissive 或Disabled,则可进行3.9中的操作。

如果输出结果为enforcing,则需要

打开/etc/selinux/config文件

将SELINUX= enforcing这一行改为SELINUX= permissive

保存并关闭文件

重新启动系统或运行setenforce 0命令来立即禁用SELinux

3.9 禁用透明大页配置

Cloudera公司建议我们关闭透明大页。如果未关闭,则在后面的环境检测中会报如下错误。

(关于什么是透明大页,不是课程重点,感兴趣的同学可以自行查询。这里只需要按照下面命令进行配置,即可在后面环境检查时候顺利通过。)

# 在三台实例上分别执行以下四行代码

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

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

echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local

echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local

# 前两行代码只能暂时生效,当重启后配置会消失

[root@hadoop102 parcel-repo]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
[root@hadoop102 parcel-repo]# echo never > /sys/kernel/mm/transparent_hugepage/enabled

# 永久生效需要把信息加到启动项中
[root@hadoop102 parcel-repo]# echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local
[root@hadoop102 parcel-repo]# echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local

3.10 启用NTP服务可选

CDH要求在集群中的每台机器上配置一个网络时间协议(NTP)服务。大多数操作系统使用时间同步的ntpd服务。

注:RHEL 7兼容的操作系统默认使用chronyd而不是ntpd。如果chronyd正在运行,Cloudera Manager将使用它来确定主机时钟是否同步。否则,Cloudera Manager使用ntpd。

[root@hadoop102 ~]# ps -ef |grep chronyd
chrony     548     1  0 10:33 ?        00:00:00 /usr/sbin/chronyd

注:我们使用的阿里云实例,已经运行了chronyd。且阿里云自动会同步时间,所以如果在阿里云上部署的话,这一步同步时间操作可以跳过

3.11 为hue安装python2.7服务

注:(CentOS 7版本可跳过)

我们使用的是CentOS 7,使用命令可观察当前的python版本。

[root@hadoop102 ~]# python --version
Python 2.7.5

3.12 【了解】CDH平台权限与命令概览

CDH平台权限与命令概览

3.13 【了解】CDH平台使用的端口概览

CDH平台使用的端口概览

3.14 创建本地yum源

3.14.1 httpd服务安装

创建本地yum源需要指定一台主机提供http服务,所以我们在hadoop102上安装httpd

[root@hadoop102 yum.repos.d]# yum -y install httpd
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
....

# 安装完成后,检查httpd服务状态


[root@hadoop102 ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:httpd(8)
           man:apachectl(8)
           
# 通过systemctl start httpd启动httpd服务

[root@hadoop102 ~]# systemctl start httpd
[root@hadoop102 ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since 二 2021-06-08 14:37:44 CST; 36s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 16258 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service

# 设置开机自启
[root@hadoop102 ~]# systemctl enable httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

3.14.2 yum源工具安装

需要使用yum-utils和createrepo来创建yum源

yum -y install yum-utils createrepo

3.14.3导入cm资源包

创建/var/www/html/cm文件夹

[root@hadoop102 html]# cd /var/www/html/
[root@hadoop102 html]# mkdir cm

将资料包中cm文件夹下的文件放入/var/www/html/cm文件夹中

(因资料包较大,如果是购买了深圳地区服务器的同学可通过以下命令进行文件的导入,该方法使用内网传输,速度较快且不耗费外部流量。如果非深圳区域的服务器,请手动上传cm文件夹下的全部文件到/var/www/html/cm目录下)

mkdir /root/shells

cd /root/shells
yum install -y wget && wget -P /root/shells/ -v https://cdh-sgg.oss-cn-shenzhen.aliyuncs.com/script/get_cm_from_shenzhenoss_internal.sh

bash  /root/shells/get_cm_from_shenzhenoss_internal.sh

3.14.4创建repo

使用createrepo命令创建本地yum源

createrepo /var/www/html/cm/

在/etc/yum.repos.d/文件夹下创建新的yum repo文件。

(这是为了告诉Linux我们自己添加的yum源的位置信息)

配置了hosts文件的情况下我们可以直接使用hadoop102作为域名访问

===========手动编写repo============

vim /etc/yum.repos.d/cloudera-manager.repo
===========把下面五行代码写入repo文件中=========
[cloudera-manager]
name=Cloudera Manager, Version yum
baseurl=http://hadoop102/cm
gpgcheck=0
enabled=1

3.14.5清除缓存并建立新的元数据缓存

#  清理缓存
[root@hadoop102 yum.repos.d]# yum clean all
已加载插件:fastestmirror
正在清理软件源: base cloudera-manager epel extras updates
Cleaning up list of fastest mirrors

# 建立元数据缓存
[root@hadoop102 yum.repos.d]# yum makecache
已加载插件:fastestmirror
Determining fastest mirrors
....
元数据缓存已建立




# 验证源是否配置生效
[root@hadoop102 yum.repos.d]# yum list | grep cloudera-manager
cloudera-manager-agent.x86_64            6.3.1-1466458.el7             cloudera-manager
cloudera-manager-daemons.x86_64          6.3.1-1466458.el7             cloudera-manager
cloudera-manager-server.x86_64           6.3.1-1466458.el7             cloudera-manager
cloudera-manager-server-db-2.x86_64      6.3.1-1466458.el7             cloudera-manager
enterprise-debuginfo.x86_64              6.3.1-1466458.el7             cloudera-manager
oracle-j2sdk1.8.x86_64                   1.8.0+update181-1             cloudera-manager


# 或者浏览器输入以下网址进行访问
http://你的hadoop102的公网IP/cm

如果能够访问到web页面(如上图),表示本地yum源创建成功。

其他两个节点同样执行建立元数据缓存的命令,并验证是否配置成功。

xsync /etc/yum.repos.d/cloudera-manager.repo

yum clean all
yum makecache

# 验证源是否配置生效
yum list | grep cloudera-manager


第四章 CM及依赖组件安装

4.1 安装java

在三台节点上执行java的安装,可以使用yum的方式进行安装

[root@hadoop102 ~]# xcall.sh yum -y install oracle-j2sdk1.8.x86_64
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 oracle-j2sdk1.8.x86_64.0.1.8.0+update181-1 将被 安装
--> 解决依赖关系完成
....

已安装:
  oracle-j2sdk1.8.x86_64 0:1.8.0+update181-1                                                            

完毕!

配置java的环境变量,因为我们在上面已经把/etc/profile中的内容追加到/root/.bashrc中,所以我们现在只需要配置/root/.bashrc文件即可。

vim /root/bin/setjavahome.sh

sed -i '$a\# JAVA_HOME' /root/.bashrc
sed -i '$a\export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera' /root/.bashrc
sed -i '$a\export PATH=$JAVA_HOME/bin:$PATH' /root/.bashrc
sed -i '$a\export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' /root/.bashrc

xsync /root/bin/setjavahome.sh

# 在三台上同时执行添加环境变量的和同步环境变量的操作
xcall.sh  bash /root/bin/setjavahome.sh && source /root/.bashrc

# 验证java是否安装成功

xcall.sh java -version

4.2 安装MySQL(使用官方方法安装)

4.2.1使用rpm的方式进行安装

wget -v http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
sudo yum -y update
sudo yum -y install mysql-server
sudo systemctl start mysqld

sudo systemctl stop mysqld  

4.2.2将InnoDB log files做备份

[root@hadoop102 ~]# mkdir /root/backup/

[root@hadoop102 ~]# mv /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile1 /root/backup/

4.2.3修改/etc/my.cnf文件

下面的配置是cloudera公司推荐的配置,可根据自己的生产实际情况进行调整。

(注意:如果使用vim编辑器粘贴,则会出现#号问题,建议使用外部编辑器进行编辑!

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# To prevent deadlocks, set the isolation level to READ-COMMITTED.
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 = 16M
thread_stack = 256K
thread_cache_size = 64
query_cache_limit = 8M
query_cache_size = 64M
query_cache_type = 1

#Allow 100 maximum connections for each database and then add 50 extra connections. For example, for two databases, set the maximum connections to 250. If you store five databases on one host (the databases for Cloudera Manager Server, Activity Monitor, Reports Manager, Cloudera Navigator, and Hive metastore), set the maximum connections to 550.
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.
#如果需要替换mysql的log文件存放位置,需要此处拥有足够的空间并且把文件夹的属主改为mysql用户
log_bin=/var/lib/mysql/mysql_binary_log

#In later versions of MySQL, if you enable the binary log and do not set
#a server_id, MySQL will not start. The server_id must be unique within
#the replicating group.
server_id=1

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
#The default settings in the MySQL installations in most distributions use conservative buffer sizes and memory usage. Cloudera Management Service roles need high write throughput because they might insert many records in the database. Cloudera recommends that you set the innodb_flush_method property to O_DIRECT.
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

4.2.4初始化MySQL

配置my.cnf完成后,启动MySQL

需要注意:

(1)因为当前无密码,所以启动时候直接回车。

(2)Disallow root login remotely?选项需要输入N,这样root用户才能远程访问。

sudo systemctl enable mysqld

sudo systemctl start mysqld

sudo /usr/bin/mysql_secure_installation

[...]这里需要配置密码,密码可以为简单密码,例如123456
Enter current password for root (enter for none):这里需要直接回车
OK, successfully used password, moving on...
[...]
Set root password? [Y/n] Y
New password:这里输入自定义的密码
Re-enter new password:这里输入自定义的密码
Remove anonymous users? [Y/n] Y
[...]
Disallow root login remotely? [Y/n] N
[...]
Remove test database and access to it [Y/n] Y
[...]
Reload privilege tables now? [Y/n] Y
All done!

将JDBC的jar包放入/usr/share/java/文件夹中

mkdir -p /usr/share/java/

cd /usr/share/java/

wget https://cdh-sgg.oss-cn-shenzhen.aliyuncs.com/fileshare/mysql-connector-java-5.1.46-bin.jar

mv mysql-connector-java-5.1.46-bin.jar mysql-connector-java.jar

创建各用户数据库(注意hive的数据库叫metastore)

Service

Database

User

Cloudera Manager Server

scm

scm

Activity Monitor

amon

amon

Reports Manager

rman

rman

Hue

hue

hue

Hive Metastore Server

metastore

hive

Sentry Server

sentry

sentry

Cloudera Navigator Audit Server

nav

nav

Cloudera Navigator Metadata Server

navms

navms

Oozie

oozie

oozie

mysql -u root -p
Enter password:
# 建表及修改权限的格式:
CREATE DATABASE <database> DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON <database>.* TO '<user>'@'%' IDENTIFIED BY '<password>';
# 以下是需要执行的SQL语句
# 替换之后需要执行的SQL为:
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'scm';
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY 'amon';
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'rman';
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'hue';
GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY 'hive';
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'sentry';
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'nav';
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY 'navms';
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie';
#####注意此处再授权一个本主机名地址,不然web页面配置很容易出错,注意修改本地主机名hostname
GRANT ALL ON amon.* TO 'amon'@'hadoop102' IDENTIFIED BY 'amon';


FLUSH PRIVILEGES;

show grants for 'amon'@'%';  
show grants for 'rman'@'%';  
show grants for 'hive'@'%';
show grants for 'hue'@'%';
show grants for 'oozie'@'%';


quit

systemctl restart mysql.service

4.3 通过yum安装daemons,agent,server

hadoop102需要安装daemons,agent,server

hadoop103和hadoop104仅需要安装daemons,agent

主节点hadoop102

yum list | grep cloudera-manager
yum -y  install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server


从节点hadoop103 hadoop104

yum list | grep cloudera-manager
yum -y  install cloudera-manager-daemons cloudera-manager-agent

为scm数据库创建表,密码为scm

[root@hadoop102 ~]# sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm

Enter SCM password: (scm)

JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera

Verifying that we can write to /etc/cloudera-scm-server

Creating SCM configuration file in /etc/cloudera-scm-server

Executing:  /usr/java/jdk1.8.0_181-cloudera/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/usr/share/java/postgresql-connector-java.jar:/opt/cloudera/cm/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.

log4j:ERROR Could not find value for key log4j.appender.A

log4j:ERROR Could not instantiate appender named "A".

[2021-06-22 21:14:01,762] INFO     0[main] - com.cloudera.enterprise.dbutil.DbCommandExecutor.testDbConnection(DbCommandExecutor.java) - Successfully connected to database.

All done, your SCM database is configured correctly!

当我们看到All done,表示目前scm数据库已经被正确配置。

4.4 配置本地Parcel存储库

注:服务器购买在深圳的同学可通过以下代码进行文件读取。服务器未在深圳的同学则需要手动上传4个文件到/opt/cloudera/parcel-repo/之中(这个文件夹是刚才安装cm之后自动生成的)

# 服务器在深圳的同学可以执行此wget命令

wget -P /opt/cloudera/parcel-repo/ -v https://cdh-sgg.oss-cn-shenzhen-internal.aliyuncs.com/cdh6.3.2/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
wget -P /opt/cloudera/parcel-repo/ -v https://cdh-sgg.oss-cn-shenzhen-internal.aliyuncs.com/cdh6.3.2/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1
wget -P /opt/cloudera/parcel-repo/ -v https://cdh-sgg.oss-cn-shenzhen-internal.aliyuncs.com/cdh6.3.2/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha256
wget -P /opt/cloudera/parcel-repo/ -v https://cdh-sgg.oss-cn-shenzhen-internal.aliyuncs.com/cdh6.3.2/manifest.json


cp  /opt/cloudera/parcel-repo/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1  /opt/cloudera/parcel-repo/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha


sudo chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/*


sudo chmod  u+x /opt/cloudera/parcel-repo/*

4.5 启动cloudera-scm-server

systemctl start cloudera-scm-server
# 重启命令为:systemctl start cloudera-scm-server

# 可以用下面命令查看server的信息
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log

# 另开启一个窗口,监控日志中是否提示启动成功

tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log|grep "Started Jetty server"
# 也可以用下面命令查看端口号占用情况

netstat -tunlp | grep 7180



# 当你看到以下信息时候 证明启动成功
INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.

下面可能会出现报错信息,这个是因为2021年CDH

# 此时登录网页
http://你的hadoop102的IP地址:7180
# 就能访问CDH集群

默认的用户名:admin

默认的密码为:admin


第五章 CM集群部署

5.1 进入CM欢迎界面

点击continue

5.2 勾选条款协议

点击continue

5.3 选择免费版本进行部署

5.4 进入cluster部署欢迎界面

点击continue

5.5 为集群命名

5.6 指定集群中的主机

5.7 填写cm库地址及选择CDH parcel包

5.8 JDK安装

我们之前安装过了可以跳过。

5.9 输入root用户的密码

5.10 显示正在部署安装,页面暂时不可点击

5.11 分发parcel包并进入节点自动化部署

5.12 进入环境检查页面

点击两个检查按钮,CM会对整个集群的环境做最后的检测。

第一个检查是检测集群之间的通信是否正常,如果为绿色,则为通过检查。

第二个检查是检测集群的环境是否配置正常,如果为绿色,证明通过检查。

(注:只要把第三章中的配置做完,这里的环境检查应该不会出现问题)

下方的表格可以告诉我们当前CDH6.3.2中各个组件的版本号。

(标注为红色的组件版本号建议同学们牢记)

All Hosts

hadoop[102-104]

---

---

Component

Version

---

---

Supervisord

3.0

Cloudera Manager Agent

6.3.1

Cloudera Manager Management Daemons

6.3.1

Flume NG

1.9.0+cdh6.3.2

Hadoop

3.0.0+cdh6.3.2

HDFS

3.0.0+cdh6.3.2

HttpFS

3.0.0+cdh6.3.2

hadoop-kms

3.0.0+cdh6.3.2

MapReduce 2

3.0.0+cdh6.3.2

YARN

3.0.0+cdh6.3.2

HBase

2.1.0+cdh6.3.2

Lily HBase Indexer

1.5+cdh6.3.2

Hive

2.1.1+cdh6.3.2

HCatalog

2.1.1+cdh6.3.2

Hue

4.2.0+cdh6.3.2

Impala

3.2.0+cdh6.3.2

Java 8

1.8.0_181

Kafka

2.2.1+cdh6.3.2

Kite

1.0.0+cdh6.3.2

kudu

1.10.0+cdh6.3.2

Oozie

5.1.0+cdh6.3.2

Parquet

1.9.0+cdh6.3.2

Pig

0.17.0+cdh6.3.2

sentry

2.1.0+cdh6.3.2

Solr

7.4.0+cdh6.3.2

spark

2.4.0+cdh6.3.2

Sqoop

5.7+cdh6.3.2

Zookeeper

3.4.5+cdh6.3.2

5.13 组件选择页面

继续安装,进入选择组件页面,点击最后一个“Custom Services”

我们选择一些常用的组件进行安装,推荐安装以下组件:

5.14 选择需要安装的服务及Host

5.15 配置数据库密码

5.16 初始参数配置

建议一:将kafka在zk中的根路径改为/kafka

建议二:将kafka的堆内存调大

其他选择默认即可

5.17 集群进入自动部署

完成的选项将会显示绿色。

5.18 安装部署完成

提示安装完成并在运行中,点击finish

5.19 修改界面语言

进入集群界面发现为英文,我们可以改为中文界面

5.20 对集群配置做优化和修改

我们可以观察到及群众有一些警示信息。

其中HDFS中的信息点击进去查看发现,是提示我们当前的节点少于9个不满足某种规定。但是我们现在只有三个节点,所以我们选择忽视这条警告。

点击“Suppress”抑制警告。

再来看一些提示优化的信息:HDFS建议最小的堆内存为4G,因为每百万块数据会占用1G的内存。但是现在我们只是练习阶段,且内存较少较为珍贵,所以忽视这条优化。在生产中可以根据数据块的总量适当调整HDFS的内存。

Hive提示Executor核数只有2小于最小值4。目前机器核数确实较少,所以忽略这条警告。

hue提示信息为需要我们安装HBase的Thrift Server在同一节点中。我们可以添加一下。

处理之后我们就完成了对集群的配置和优化。


第六章 参数配置

6.1 HDFS配置域名访问

在阿里云环境下Hadoop集群必须用域名访问,不能用IP访问。

进入HDFS的configuration界面

开启如下配置dfs.client.use.datanode.hostname

6.2 设置物理核和虚拟核占比

当前购买的阿里云配置物理核一共为6核,为演示效果将虚拟核扩大1倍,一般真实场景下物理核和虚拟核对比值为1:1或1:2

进入yarn配置,搜索yarn.nodemanager.resource.cpu-vcores修改配置,每台机器物理核2核虚拟成4核

6.3 修改单个容器下最大cpu申请资源

修改yarn.scheduler.maximum-allocation-vcores参数调整4核

6.4 设置每个任务容器内存大小和单节点大小

将每个任务容器默认大小从1G调大至4G,修改yarn.scheduler.maximum-allocation-mb调整每个任务容器内存所需大小

当前集群环境下每个节点的物理内存为8G,设置每个yarn可用每个节点内存为7G,修改yarn.nodemanager.resource.memory-mb调整每个节点内存所需大小

6.5 关闭Spark动态分配资源参数

关闭spark.dynamicAllocation.enabled参数,否则分配的资源不受控制

6.6 修改HDFS副本数和权限检查配置

修改dfs.replication副本数为1(可选,根据业务场景进行修改)

关闭HDFS中的权限检查:dfs.permissions

6.7 设置容量调度器

CDH默认公平调度器,修改为容量调度器。

进入yarn,搜索scheduler,找到项,修改为CapacityScheduler

CDH默认为root队列,可以配置多队列

添加两个队列spark与hive,spark资源设置占yarn集群80%,hive设置占yarn集群20%

(请注意这四个配置项的顺序不能出错,且一定要写清楚)

yarn.scheduler.capacity.root.queues

yarn.scheduler.capacity.root.capacity

yarn.scheduler.capacity.root.spark.capacity

yarn.scheduler.capacity.root.hive.capacity

配置完毕后重启服务,到yarn界面查看调度器,已经发生变化,有hive队列和spark队列。

6.8 修改hive-site.xml的配置

因为我们删除了yarn的default队列,但是hive里面执行sql默认走的还是default,如果不做设置的话,在hive里面执行sql会报错,所以我们需要在hive里面设置三个参数。

set mapreduce.job.queuename=hive;

set mapred.job.queue.name=hive;

set mapred.queue.names=hive;

如果想要临时生效,只需要在hive中执行这几个配置项即可。

如果想要永久生效,进入hive,选择配置选项,然后搜索hive-site.xml

hive-site.xml的Hive服务高级配置代码段(安全阀)添加如图所示三个参数

hive-site.xml 的 Hive 客户端高级配置代码段(安全阀)再次添加

重启过时服务,重新部署过期客户端配置,再次进入hive,就可以正常使用hivesql了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值