CDH 6.2.0 安装指导

1 说明

该操作书适用于 CDH6.X+CentOS7.X。

2 准备

◎CDH安装包

◎操作系统

i)完成安装;

ii)完成搭建CentOS操作系统yum源,详见其他参考文档;

◎数据库

Mysql数据库已完成安装,详见其他参考文档;

说明:以下操作都是在root用户下进行的。

3 环境准备

3.1 服务器规划

IP hostname 角色
10.19.151.141 cdhcluster-node-141 clouder-manager
10.19.151.142 cdhcluster-node-142
10.19.151.143 cdhcluster-node-143
10.19.151.144 cdhcluster-node-144

以四台机器作为集群为例进行说明,clouder-manager选取其中一台机器即可。

3.2 配置/etc/hosts、主机名(所有节点)

i) 修改主机的解析名

hostnamectl set-hostname cdhcluster-node1 --static

ii) 修改ip与主机名对应关系

vi /etc/hosts

添加以下内容 ip + 主机名

#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

10.19.151.141 cdhcluster-node-141

10.19.151.142 cdhcluster-node-142

10.19.151.143 cdhcluster-node-143

10.19.151.144 cdhcluster-node-144

注意:注释掉第一行;

iii)配置本机的hosts

修改C:\Windows\System32\drivers\etc\hosts 在文件末尾添加如下内容

image.png

Tips:(Win10修改编辑hosts文件无法保存怎么办

3.3关闭防火墙、禁止防火墙开机自启(所有节点)

i)关闭防火墙

systemctl stop firewalld

ii)禁止防火墙开机自启

systemctl disable firewalld

iii)关闭SELINUX

vim /etc/selinux/config —> SELINUX=disabled (修改)

(检查SELinux模式:getenforce,如果输出permissive或者disabled,你可以跳过该步骤)

3.4 SSH无密码登陆(所有节点)

clouder-manager节点执行命令,一路回车到结束,在/root/.ssh/下面会生成一个公钥文件id_rsa.pub

ssh-keygen -t rsa

将公钥追加到authorized_keys

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

修改权限

chmod 600 ~/.ssh/authorized_keys

将~/.ssh从当前节点分发到其他各个节点。如:

scp -r ~/.ssh/ root@cdhcluster-node-142:~

ssh 各个节点互相登陆

3.5配置CentOS源(所有节点)

  1. 先把原来的源文件删除,把每台机器上的都删除
for a in {1..4} ; do ssh cdhcluster-node-14$a rm -rf /etc/yum.repos.d/* ; done
  1. 创建文件/etc/yum.repos.d/os-iso.repo,文件内容如下:
# CentOS-Base.repo

#

# The mirror system uses the connecting IP address of the client and the

# update status of each mirror to pick mirrors that are updated to and

# geographically close to the client. You should use this for CentOS updates

# unless you are manually picking other mirrors.

#

# If the mirrorlist= does not work for you, as a fall back you can try the

# remarked out baseurl= line instead.

[base]

name=CentOS-\$releasever - Base

baseurl=http://10.19.151.134/centos/\$releasever/os/\$basearch/

gpgcheck=1

enabled=1

gpgkey=http://10.19.151.134/RPM-GPG-KEY-CentOS-7

[updates]

name=CentOS-\$releasever - Updates

baseurl=http://10.19.151.134/centos/\$releasever/updates/\$basearch/

gpgcheck=1

enabled=1

gpgkey=http://10.19.151.134/RPM-GPG-KEY-CentOS-7

说明:10.19.151.134为已经的搭建CentOS操作系统yum源服务器。

  1. 机器输入yum list 会显示文件列表
image.png

说明数据源已经搭建完成。

  1. 给每台机器拷贝一份
for a in {1..4} ; do scp /etc/yum.repos.d/os.repo cdhcluster-node-14$a:/etc/yum.repos.d/ ; done

3.6配置NTP服务(所有节点)

1)时区(改为中国标准时区)

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

2)安装ntp

yum -y install ntp

3)ntp配置

ntp服务器配置

添加如下一行

restrict 10.19.151.0 mask 255.255.255.0 nomodify

注释原有server,指向本机

server 127.127.1.0

fudge 127.127.1.0 stratum 0
image.png

ntp客户端配置

注释原有server,指向ntp服务器

server 10.19.151.131
image.png

4)启动 ntp 服务

service ntpd restart

5)设置开机自启

systemctl enable ntpd.service

6)查看与时间同步服务器的时间偏差

ntpdc -c loopinfo
image.png

7)查看当前同步的时间服务器


image.png

配置成功状态(服务开启后前面出现*说明成功)

8)查看状态

ntpstat
image.png

注意:配置完启动ntp服务后,不会立即进行同步,ntp服务会根据自己的算法来逐步同步,可以在配置完过一段时间后再来确认同步的时间服务器以及同步状态等信息。

3.7修改Linux swappiness参数(所有节点)

通过命令查询出后,依次修改

find /usr/lib/tuned -name '*.conf' -type f -exec grep "vm.swappiness" {} \+

如下

image.png

3.8禁用透明页(所有节点)

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

永久生效 在/etc/rc.local 添加上面命令

image.png

给与可执行权限

chmod +x /etc/rc.d/rc.local

3.9 JDK安装(所有节点)

卸载&安装JDK

rpm -qa \| grep java \# 查询已安装的java

yum remove java\* \# 卸载

rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm

配置环境变量

vi /etc/profile 末尾添加

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

export PATH=\$JAVA_HOME/bin:\$PATH

export CLASSPATH=.:\$CLASSPATH:\$JAVA_HOME/lib/

export JRE_HOME=/usr/java/jdk1.8.0_181-cloudera/jre

3.10 mysql驱动包部署(所有节点)

创建/usr/share/java目录,将mysql-jdbc包放过去(所有节点)

mkdir -p /usr/share/java

mv /opt/mysql-j/mysql-connector-java-5.1.34.jar /usr/share/java/

mysql-connector-java-5.1.34.jar 一定要命名为mysql-connector-java.jar

3.11 重启Reboot(所有节点)

为保证防火墙、虚拟机参数修改后生效,各节点机器需要重启 reboot。

3.12 MySql数据建库

在Mysql数据库所在服务器,创建如下数据库:

服务名 数据库名 用户名 密码
Cloudera Manager Server scm scm password
Activity Monitor amon amon password
Reports Manager rman rman password
Hue hue hue password
Hive Metastore Server metastore hive password
Sentry Server sentry sentry password
Cloudera Navigator Audit Server nav nav password
Cloudera Navigator Metadata Server navms navms password
Oozie oozie oozie password

初始化语句

CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'password';
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY 'password';
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'password';
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'password';
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY 'password';
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'password';
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'password';
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY 'password';
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'password';

3.13 安装Httpd服务(manger节点)

yum install httpd

service httpd start

systemctl enable httpd.service \#设置httpd服务开机自启

3.14 配置Cloudera Manager包yum源(manager节点)

创建发布目录

mkdir -p /var/www/html/cloudera-repos/

将下载的cm包文件移到此目录下:

mv cm6 /var/www/html/cloudera-repos/

cd /var/www/html/cloudera-repos/cm6/

创建repodata:

createrepo .
image.png

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

image.png

注意路径:http://manager/cloudera-repos/cm6/,其中manager请替换对应主机的名称或IP。

yum clean all

yum makecache

3.15 导入GPG key(manager节点)

如果没有这步操作,很可能cloudera服务安装失败

rpm -import 

3.16 安装 Cloudera Manager(manager节点)

yum install cloudera-manager-daemons cloudera-manager-agent
cloudera-manager-server

安装完CM后/opt/ 下会出现cloudera目录。

1)配置本地Parcel存储库

mv /opt/parcels/* /opt/cloudera/parcel-repo # 将parcel包移动到指定位置

在/opt/cloudera/parcel-repo执行以下命令:

sha1sum CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel | awk ‘{ print $1 }’ > CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.sha

2)设置Cloudera Manager 数据库

a、mysql数据库与CM Server是同一台主机

执行命令:

/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm

b、mysql数据库与CM Server不在同一台主机上

执行命令:

/opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h  --scm-host  scm scm

3)打开Server服务

service cloudera-scm-server start

然后等待Cloudera Manager
Server启动,需要等待约3-5分钟时间,此过程中scm会在上一步指定的mysql数据库中创建SCM相关的表。同时也可通过如下命令读取启动日志,若看到关于表不存在的warning时可忽略。

tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log

去监控服务启动状态。

当看到INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty
server.日志打印出来后,说明服务启动成功,可以通过浏览器访问Cloudera Manager
WEB界面了,静候几分钟,打开http://manager:7180。

4 大数据组件安装

4.1 登陆cm web界面

打开浏览器,访问地址:http://:7180,默认账号和密码都为admin。

image.png

4.2 具体安装步骤

欢迎页面

首先是Cloudera Manager的欢迎页面,点击页面右下角的【继续】按钮进行下一步:

image.png

接受条款

勾选接受条款,点击【继续】进行下一步:

image.png

版本选择

这里选择免费版

image.png

设置集群名称

image.png

选择主机

这一步是要搜索并选择用于安装CDH集群的主机,在主机名称后面的输入框中输入各个节点的hostname,中间使用英文逗号分隔开,然后点击搜索,在结果列表中勾选要安装CDH的节点即可:

image.png

指定存储库

Cloudera Manager Agent

这里选择自定义,填写上面使用httpd搭建好的Cloudera Manager YUM 库URL:

image.png

CDH and other software

如果我们之前的【配置本地Parcel存储库】步骤操作无误的话,这里会自动选择【使用Parcel】,并加载出CDH版本,确认无误后点击【继续】。

JDK安装选项

这一步骤我就不再勾选安装JDK了,因为我在环境准备部分已经安装过了。取消勾选,然后继续:

image.png

SSH登录配置

用于配置集群主机之间的SSH登录,填写root用户的密码,根据集群配置填写合适的【同时安装数量】值即可。

image.png

安装Agent

到这一步会自动进行节点Agent的安装,稍等一会儿,即可安装完成:

image.png
image.png

安装Parcels

这一步同样是自动安装,分配步骤的速度主要取决于网络环境,耐心等待即可

image.png

主机检查

image.png

安装CDH集群,选择服务类型

image.png

审核更改

image.png

将Kafka配置的ZooKeeper Root修改为/kafka,如下

image.png

数据库设置

image.png

命令详细信息&汇总

image.png
image.png

到这里CDH集群的安装基本上就已经完成了。

5 其他操作

5.1 启用HDFS的HA

在HDFS集群中NameNode存在单点故障(SPOF),对于只有一个NameNode的集群,如果NameNode机器出现意外,将导致整个集群无法使用。为了解决NameNode单点故障的问题,Hadoop给出了HDFS的高可用HA方案,HDFS集群由两个NameNode组成,一个处于Active状态,另一个处于Standby状态。

Active NameNode可对外提供服务,而Standby NameNode则不对外提供服务,仅同步Active
NameNode的状态,以便在Active
NameNode失败时快速的进行切换。这里主要介绍如何使用Cloudera Manager启用HDFS的HA。

前置条件

1.拥有Cloudera Manager的管理员账号

2.CDH集群已安装成功并正常使用

启用HDFS的HA

1.使用管理员用户登录Cloudera Manager的Web管理界面,进入HDFS服务。
image.png
2. 点击“启用High Avaiability”,设置NameService名称
image.png
3.点击“继续”,选择NameNode主机及JouralNode主机
image.png

JouralNode主机选择,一般与Zookeeper节点一致即可(至少3个且为奇数)

4.点击“继续”,设置NameNode的数据目录和JouralNode的编辑目录
image.png

NameNode的数据目录默认继承已有NameNode数据目录。

5.点击“继续”,启用HDFS的High Availability,如果集群已有数据,格式化NameNode会报错,不用理。
image.png
6.点击“继续”,完成HDFS的High Availability
image.png
7.HDFS实例查看
image.png

通过实例列表可以看到启用HDFS HA后增加了NameNode、Failover
Controller及JouralNode服务并且服务都正常启动,至此已完成了HDFS HA的启用。

更新Hive MetaStore NameNode

1.进入Hive服务并停止Hive的所有服务
image.png
2.确认Hive服务停止后,点击“更新Hive Metastore NameNode”
image.png
3.更新Hive Metastore NameNode
image.png
4.更新成功
image.png
5.启动Hive服务
image.png

完成HiveMetastore NameNode更新。

5.2 启用Kerberos

安装环境:OS:CentOS7.5 CDH6.2

备注:因CentOS7.5的krb相关组件存在Bug,需要升级版本,请在安装前部署krb5-1.15.1-34.el7版本的源,并在yum安装时指定版本。

1. KDC服务安装及配置

将KDC服务安装在Cloudera Manager
Server所在服务器上(KDC服务可根据自己需要安装在其他服务器)。

  1. 在CM服务器上安装KDC服务
yum install krb5-server-1.15.1-34.el7.x86_64 krb5-libs-1.15.1-34.el7.x86_64
krb5-workstation-1.15.1-34.el7.x86_64
  1. 配置/etc/krb5.conf
# Configuration snippets may be placed in this directory as well

includedir /etc/krb5.conf.d/

[logging]

default = FILE:/var/log/krb5libs.log

kdc = FILE:/var/log/krb5kdc.log

admin_server = FILE:/var/log/kadmind.log

[libdefaults]

dns_lookup_realm = false

ticket_lifetime = 24h

renew_lifetime = 7d

forwardable = true

rdns = false

pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt

default_realm = HADOOP.COM

#default_ccache_name = KEYRING:persistent:%{uid}

[realms]

HADOOP.COM = {

kdc = cdhcluster-node-141

admin_server = cdhcluster-node-141

}

[domain_realm]

.hadoop.com = HADOOP.COM

hadoop.com = HADOOP.COM

其中,kdc&admin_server修改为当前kdc所在的主机名。

  1. 配置/var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]

kdc_ports = 88

kdc_tcp_ports = 88

[realms]

HADOOP.COM = {

#master_key_type = aes256-cts

max_renewable_life= 7d 0h 0m 0s

acl_file = /var/kerberos/krb5kdc/kadm5.acl

dict_file = /usr/share/dict/words

admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab

supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal
arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal
des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal

}
  1. 配置/var/kerberos/krb5kdc/kadm5.acl
*/[email protected] 

(5) 创建Kerberos数据库

kdb5_util create -r HADOOP.COM -s
image.png

注意:此处需要输入Kerberos数据库的密码,请务必记清密码。

(6)创建Kerberos的管理账号(database administrator)

kadmin.local -q "addprinc admin/admin"
image.png

输入并记住密码。

(7)将Kerberos服务添加到自启动服务,并启动krb5kdc和kadmin服务

systemctl enable krb5kdc

systemctl enable kadmin

systemctl start krb5kdc

systemctl start kadmin

(8)测试Kerberos的管理员账号

kinit admin/admin\@HADOOP.COM

klist -e
image.png

(9)集群所有节点安装Kerberos客户端(包括CM)

yum -y install krb5-libs-1.15.1-34.el7.x86_64
krb5-workstation-1.15.1-34.el7.x86_64

(10)CM节点安装额外组件

yum -y install openldap-clients

(11)拷贝配置文件

将KDC Server上的krb5.conf文件拷贝到所有Kerberos客户端(即集群所有节点)

scp /etc/krb5.conf 10.19.151.142:/etc/

2.CDH集群启用Kerberos

(1)配置集群JDK

下载jce_policy-8.zip

链接: http://www.oracle.com/technetwork/java/javase/downloads/index.html

 unzip jce_policy-8.zip

 cp UnlimitedJCEPolicyJDK8/*.jar
/usr/java/jdk1.8.0_181-cloudera/jre/lib/security/

(2)KDC添加Cloudera Manager管理员账号

kadmin.local -q "addprinc cloudera-scm/admin"
image.png

输入并记住密码。

(3)进入Cloudera Manager的“管理”->“安全”界面

image.png

(4) 选择“启用Kerberos”,进入如下界面,
确保如下列出的所有检查项都已完成,然后全部点击勾选

image.png

(5) 点击“继续”,配置相关的KDC信息,包括类型、KDC服务器、KDC
Realm、加密类型以及待创建的Service
Principal(hdfs,yarn,,hbase,hive等)的更新生命期等.

image.png

加密类型与/var/kerberos/krb5kdc/kdc.conf配置的保持一致。

(6) 不建议让Cloudera Manager来管理krb5.conf, 点击“继续”

image.png

(7) 输入Cloudera
Manager的Kerbers管理员账号,一定得和之前创建的账号一致,点击“继续”

image.png

(8) 点击“继续”启用Kerberos

image.png
image.png

(9)点击“继续, Kerberos启用完成。

image.png

5.3 Impala负载均衡(haproxy)

这里以集群已启用Kerberos的情况进行说明。

HAProxy安装以及启停

  1. 在集群中选择一个节点,使用yum方式安装HAProxy服务。
yum -y install haproxy
  1. 启动与停止HAProxy服务,并将服务添加到自启动列表
service haproxy start

service haproxy stop

chkconfig haproxy on

HAProxy配置Impala负载均衡

  1. 将/etc/haproxy目录下的haproxy.cfg文件备份,新建haproxy.cfg文件,添加如下配置
#---------------------------------------------------------------------

# Example configuration for a possible web application. See the

# full configuration options online.

#

# http://haproxy.1wt.eu/download/1.4/doc/configuration.txt

#

#---------------------------------------------------------------------

#---------------------------------------------------------------------

# Global settings

#---------------------------------------------------------------------

global

log 127.0.0.1 local2

chroot /var/lib/haproxy

pidfile /var/run/haproxy.pid

maxconn 4000

user haproxy

group haproxy

daemon

# turn on stats unix socket

stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------

# common defaults that all the 'listen' and 'backend' sections will

# use if not designated in their block

#---------------------------------------------------------------------

defaults

mode http

log global

option httplog

option dontlognull

#option http-server-close

#option forwardfor except 127.0.0.0/8

option redispatch

retries 3

timeout http-request 10s

timeout queue 1m

timeout connect 10s

timeout client 1m

timeout server 1m

timeout http-keep-alive 10s

timeout check 10s

maxconn 3000

listen stats

bind 0.0.0.0:1080

mode http

option httplog

maxconn 5000

stats refresh 30s

stats uri /stats

listen impalashell

bind 0.0.0.0:25003

mode tcp

option tcplog

balance leastconn

server cluster-node-131 cluster-node-131:21000 check

server cluster-node-132 cluster-node-132:21000 check

server cluster-node-133 cluster-node-133:21000 check

server cluster-node-134 cluster-node-134:21000 check

listen impalajdbc

bind 0.0.0.0:25004

mode tcp

option tcplog

balance leastconn

server cluster-node-131 cluster-node-131:21050 check

server cluster-node-132 cluster-node-132:21050 check

server cluster-node-133 cluster-node-133:21050 check

server cluster-node-134 cluster-node-134:21050 check

主要配置了HAProxy的http状态管理界面、impalashell和impalajdbc的负载均衡。

2.重启HAProxy服务

service haproxy restart

3.浏览器访问http://{hostname}:1080/stats

image.png

看到以上截图说明,已经成功配置了Impala服务的负载均衡。

Impala配置

  1. 使用管理员账号登录Cloudera Manager,进入Impala服务,在“配置”下面搜索“Load
    Balancer”
image.png
  1. 保存配置,回到CM主页根据提示,重启相应服务
image.png

Impala shell访问

  1. 获取Kerberos令牌

  2. 使用Impala shell访问HAProxy服务的25003端口,命令如下

impala-shell -i :25003

Impala JDBC访问

CONNECTION_URL =
"jdbc:impala://10.19.151.131:25004/default;AuthMech=1;KrbRealm=HADOOP.COM;KrbHostFQDN=cluster-node-131;KrbServiceName=impala"

JDBC访问需要修改为haproxy部署服务的IP和端口,kerberos认证采用相关的凭据。

你可能感兴趣的:(CDH 6.2.0 安装指导)