离线部署 Cloudera Manager 5 和 CDH 5.12.1 及使用 CDH 部署 Hadoop 集群服务

历时一天半,着实废了不少功夫。
整个搭建过程,是参考这篇文章大神的部署文档。

一、系统环境配置

前提是/etc/hostname已经修改过了。并且要注意,hostname中不允许有下划线_,一律用-代替。

1.修改映射关系

修改所有节点/etc/hosts文件并添加所有节点的映射关系

[root@see-data-pre-slave-1 local]# vim /etc/hosts

查看修改后的/etc/hosts文件内容

[root@see-data-pre-slave-1 local]# cat /etc/hosts
#127.0.0.1  localhost  localhost.localdomain  see-data-pre-slave-1
#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.1  see-data-pre-master-01
192.168.0.2  see-data-pre-slave-1

2.配置免密的sudo用户

[root@see-data-pre-slave-1 local]# useradd hadoop
[root@see-data-pre-slave-1 local]# passwd hadoop

用户名:hadoop,密码:hadoop
root用户下visudo,添加hadoop ALL=(ALL) NOPASSWD: ALL

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
hadoop  ALL=(ALL)       NOPASSWD: ALL

所有节点都需要这样配置

3.配置节点间免密ssh(hadoop用户)

hadoop用户下

ssh-keygen -t rsa

猛按回车。
~/.ssh/下会生成公钥id_rsa.pub和私钥id_rsa文件。然后将各节点的公钥互相追加。
公钥追加时,ssh-copy-id也好,手动创建也好,都可以。
但要确保节点对应用户下的authorized_keys文件,有对应的读权限。比较常见的作法就是chmod 400 authorized_keys。不然有可能会在都配置好的情况下,ssh时要么需要密码验证。要么会报Permission denied (publickey,gssapi-keyex,gssapi-with-mic).的error。
同时也要注意sshd_config的配置方法。

$ vim /etc/ssh/sshd_config

记得放开PasswordAuthentication no > yes

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication no
#PermitEmptyPasswords no
PasswordAuthentication yes

如果要修改ssh默认的端口配置,则需要vim /etc/ssh/ssh_config,将port变更为你想要的端口。

   Port 37500
#   Protocol 2
#   Cipher 3des

之后重启sshd服务。
全部完成后,开一个窗口测试下能否免密登录

$ ssh hadoop@see-data-pre-slave-1

4.关闭防火墙

$ systemctl stop firewalld.service

5.关闭SELINUX

这里我选择永久关闭

$ vi /etc/selinux/config

SELINUX=enforcing 改为 SELINUX=disabled
设置需要重启后才能生效。

6.配置jdk

下载Linux环境下的jdk1.8,上传至/opt并解压。

$ cd /opt
$ tar zxvf jdk-8u144-linux-x64.tar.gz
$ mv jdk1.8.0_144/ /lib/jvm

配置环境变量

$ vi /etc/profile

在其中添加

#jdk
export JAVA_HOME=/lib/jvm/jdk1.8.0_144
export JRE_HOME=${JAVA_HOME}/jre   
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib   
export PATH=${JAVA_HOME}/bin:$PATH 

保存后使环境变量生效

$ source /etc/profile

通过java -versionwhereis java验证。
这里如果没用生效的话。我是选择设置软链接的方式,直接指向我解压的文件夹

$ ln -sf /lib/jvm/jdk1.8.0_144/jre/bin/java /bin/java
$ ln -sf /lib/jvm/jdk1.8.0_144/bin/javac /bin/javac

7.设置NTP

所有节点安装NTP

$ yum install ntp

设置同步

$ ntpdate -d master-01

然后重启服务

$ service ntpd restart

这里需要注意,如果是腾讯云的云服务器,需要vim /etc/ntp.conf来使用腾讯云的服务。

sudo vim /etc/ntp.conf
 
# Use public servers from the pool.ntp.org project.
 
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
 
server ntpupdate.tencentyun.com
 
#server 0.centos.pool.ntp.org iburst
 
#server 1.centos.pool.ntp.org iburst
 
#server 2.centos.pool.ntp.org iburst
 
#server 3.centos.pool.ntp.org iburst

8.安装httpd服务

$ yum install httpd

启动

$ service httpd start

9.主节点(master)安装配置mysql

mysql 依赖libaio库

$ yum install libaio

下载mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz,上传至/opt,解压重命名至/usr/local/mysql

$ cd /opt
$ wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz
$ tar -zxvf /opt/mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
$ mv /usr/local/mysql-5.7.19-linux-glibc2.12-x86_64/ /usr/local/mysql

新建用户组和用户

$ groupadd mysql
$ useradd mysql -g mysql

创建目录并授权

$ cd /usr/local/mysql/ 
$ mkdir data mysql-files
$ chmod 750 mysql-files
$ chown -R mysql .
$ chgrp -R mysql .

初始化mysql

$ bin/mysqld --initialize --user=mysql

注意mysql临时密码。root@localhost生成临时密码o89<flb-t2oD,也就是root@localhost:后的字符串。
授予读写权限

$ chown -R root .
$ chown -R mysql data mysql-files

添加到mysql启动脚本到系统服务

$ cp support-files/mysql.server /etc/init.d/mysql.server

给日志目录授予读写权限

$ mkdir /var/log/mariadb
$ touch /var/log/mariadb/mariadb.log
$ chown -R mysql:mysql /var/log/mariadb

修改/etc/my.cnf

$ vi /etc/my.cnf

修改 [mysqld]组下的 socket 路径,注释掉/var/lib/mysql/mysql.sock,加一行为tmp/mysql.sock

[mysqld]
datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysql.sock
socket=/tmp/mysql.sock

启动mysql服务

$ service mysql.server start

登录mysql

$ /usr/local/mysql/bin/mysql -uroot -p
Enter password: 

这里的密码就是之前提到的,临时密码o89<flb-t2oD。

登陆成功后,设置MySQL密码

mysql> ALTER USER   'root'@'localhost' identified by '你想设置的密码';
mysql> flush privileges;

开启远程登录

mysql> grant all privileges on *.*  to  'root'@'%'  identified by '你想设置的密码'  with grant option;
mysql> flush privileges;
mysql> exit;

安装mysql时,我遇到过bin/mysqld: error while loading shared libraries: libnuma.so.1的error。
解决办法是yum -y install numactl(centos情况下)

10.下载依赖包

$ yum -y install chkconfig
$ yum -y install bind-utils
$ yum -y install psmisc
$ yum -y install libxslt
$ yum -y install zlib
$ yum -y install sqlite
$ yum -y install cyrus-sasl-plain
$ yum -y install cyrus-sasl-gssapi
$ yum -y install fuse
$ yum -y install portmap
$ yum -y install fuse-libs
$ yum -y install redhat-lsb

二、cloudera manager Server & Agent 安装

1.在所有节点,创建/opt/cloudera-manager

把下载好的cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz安装包上传至 master节点/opt/目录。
所有节点解压安装Cloudera Manager Server & Agent。

$ cd /opt
$ tar xvzf cloudera-manager*.tar.gz -C /opt/cloudera-manager

2.在所有节点,创建用户cloudera-scm

$ useradd --system --home=/opt/cloudera-manager/cm-5.12.1/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

3.配置cm agent

修改所有节点agent server_host

$ vim /opt/cloudera-manager/cm-5.12.1/etc/cloudera-scm-agent/config.ini

将server_host 修改成 master节点

# Hostname of the CM server.
server_host=192.168.0.1

# Port that the CM server is listening on.
server_port=7182

4.配置cm server的数据库

在master节点初始化cm5的数据库。
下载mysql驱动包

$ cd /opt/cloudera-manager/cm-5.12.1/share/cmf/lib
$ wget http://maven.aliyun.com/nexus/service/local/repositories/hongkong-nexus/content/Mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar

启动mysql服务

$ service mysql.server start
$ cd /opt/cloudera-manager/cm-5.12.1/share/cmf/schema/

$ ./scm_prepare_database.sh mysql cm -h 192.168.0.1 -uroot -pseemysql2018 --scm-host 192.168.0.1 scm scm scm

如果看到如下信息,说明成功

[main] DbCommandExecutor              INFO  Successfully connected to database.
All done, your SCM database is configured correctly!

在这里遇到的坑就是,找不到$JAVA_HOME

./scm_prepare_database.sh: line 379: /lib/jvm/bin/java: No such file or directory

如果之前配置了软链接,或环境变量生效的话,不会出现这个错误。
最坏的办法就是去修改对应的配置shell,找到java8下的目录列表,把你解压好的java绝对路径加进去。
在初始化失败后,再次启动时,会报cm库已存在的error。解决办法就是在mysql中删掉对应的库,再次初始化。


master配置的mysql

5.创建 parcel 目录

master节点创建目录/opt/cloudera/parcel-repo
将下载好的文件

CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel
CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha
manifest.json

cp到该目录下

$ mkdir -p /opt/cloudera/parcel-repo
$ chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
$ cd /opt/cloudera/parcel-repo

重命名,CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1 否则,系统会重新下载 CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel

$ mv CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1 CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha

slave 节点创建目录/opt/cloudera/parcels

$ mkdir -p /opt/cloudera/parcels
$ chown cloudera-scm:cloudera-scm /opt/cloudera/parcels

6.启动cm manager & agent服务

master节点

$ /opt/cloudera-manager/cm-5.12.1/etc/init.d/cloudera-scm-server start

这里如果启动失败的话。就sudo执行
slave节点

$ /opt/cloudera-manager/cm-5.12.1/etc/init.d/cloudera-scm-agent start

如果http://master:7180(用户名/密码,admin/admin)可以访问,则安装成功。

登录页
不选最后一个就行。现在默认会有60天的试用期,到期之后就会转到免费版,不影响集群使用。

再点击继续。

如果agent服务启动正常就可以在当前管理的主机中,看到对应的节点。

正常情况下,这里不用主动搜索新主机。如果当前管理的主机中没有缺少节点,则需要检查对应节点的agent服务是否正常启动。
ssh端口需修改成服务器sshd_config中指定的默认端口。

选中节点,点击继续

选中离线下载的cdh对应版本

点击继续,如果配置本地 Parcel 包无误,那么下图中的已下载,应该是瞬间就完成了,然后就是耐心等待分配过程就行了。
在这里,如果选择主动扫描添加新节点,在没有配置好本地yum的情况下,会出现各种各样意外的bug。
比如IOError: [Errno 20] Not a directory: u'/opt/cloudera/parcels/CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel/meta/parcel.json'
cloudemanager安装时出现ProtocolError: <ProtocolError for 127.0.0.1/RPC2: 401 Unauthorized>
cdh Timed out waiting for worker process collecting filesystem usage to complete。这个部分我没有找到很好的解决办法。困扰了至少2个小时。直到我选择在当前管理主机中安装,问题就解决了。

等待完成

中间出现的,选择是否安装oracle java se 开发工具包(JDK)步骤,勾选安装。
集群安装,是否启用单用户模式,不勾选。

点击继续,检查主机正确性

一般情况下,检查完之后只会出图中这两个error。第一个不清楚是什么。第二个是说已启用透明大页压缩,可能会导致性能问题。解决办法就是如下如下三个命令。

$ echo 0 > /proc/sys/vm/swappiness
$ echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
$ echo never > /sys/kernel/mm/transparent_hugepage/enabled

然后将这两个命令添加到/etc/rc.local中。
重新运行检查主机正确性。完成后点击继续。

根据实际需求选择

点击继续。
角色分配页,分配好对应的角色后,
点击继续。
配置数据库,这里使用之前master节点安装的mysql数据库。
配置项共有hive/hue/ozzie,可根据实际需要建对应的库及账号。
对应配置确定之后,右下方会有一个测试连接按钮。全部测试通过后,才可以点击继续。
在这里,我遇到的一个JDBC driver cannot be found. Unable to find the JDBC database jar on host的error。解决办法是mysql-connector-java.jar 复制为/usr/share/java/mysql-connector-java.jar,文件名必须一致。
点击继续。
目录文件的配置页,基本上保持默认即可。
点击继续。
等待分配,安装。

主页

至此,集群配置安装成功!
到这一步时,我还遇到一个错误Cloudera NFS Gateway Error : Cannot connect to port 111。出现这种问题的原因可能是 rpcbind 停止了服务。
解决办法

$ systemctl status rpcbind.service
$ systemctl start rpcbind.service
$ systemctl stop rpcbind.service
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容