CDH5.9.0离线安装文档

CDH5.9.0离线安装文档

1 CDH简介

CDH (Cloudera's Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,并集成了很多补丁,可直接用于生产环境。

Cloudera Manager则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机、Hadoop、Hive、Spark等服务的安装配置管理做了极大简化。

2 安装包准备

Cloudera Manager下载地址:http://archive.cloudera.com/cdh5/parcels/5.9.0/

cloudera-manager-centos7-cm5.9.0_x86_64.tar.gz

CDH安装包地址:http://archive.cloudera.com/cm5/cm/5/

CDH-5.9.0-1.cdh5.9.0.p0.23-el7.parcel

CDH-5.9.0-1.cdh5.9.0.p0.23-el7.parcel.sha1

manifest.json

 

 

  1. 系统环境

系统:centos7.2

Cloudera:CDH-5.9.0-1.cdh5.9.0.p0.23-el7

内存:主节点8G,其他节点4G

4 环境准备

4.1 修改hostname

在7版本中,hostname有三种形式:

静态(Static host name)

动态(Transient/dynamic host name)

别名(Pretty host name)

 

查询主机名

hostnamectl status [--static|--transient|--pretty]

 

修改主机名

hostnamectl set-hostname newhostname [--static|--transient|--pretty]

 

建议再通过修改nework文件修改配置文件:

vim /etc/sysconfig/network

HOSNAME=mujinkeji1

后面为cm初始化数据库时,会读取这个hostname导致数据库没有权限

 

4.2 修改hosts文件

vim /etc/hosts

172.18.231.111 mujinkeji1

172.18.231.112 mujinkeji2

172.18.231.113 mujinkeji3

172.18.231.114 mujinkeji4

 

如果是阿里云服务器还要讲原来配置的原来实例名的哪一行去掉

 

验证:ping mujinkeji2

 

4.3 配置ssh免密码登录

cd ~/.ssh(即/root/.ssh 如果不存在则创建)

ssh-keygen -t rsa(四个回车)生成密钥对

ssh-copy-id mujinkeji4(将公钥复制到其他服务器的一个方便脚本,cdh要求给本机也执行该命令)

 

验证:ssh mujinkeji2

 

4.4 关闭防火墙

查看默认防火墙状态:firewall-cmd --state

停止firewall:systemctl stop firewalld.service

禁止firewall开机启动:systemctl disable firewalld.service

 

4.5 关闭SELinux

查看SELinux状态:sestatus

临时关闭SELinux:setenforce 0

永久关闭(需重启生效):

vim /etc/selinux/config

SELINUX=disabled

 

4.6 配置jdk

解压:

tar -xzvf jdk-8u102-linux-x64.tar.gz -C /opt

配置环境变量:

vim /etc/profile

export JAVA_HOME=/opt/jdk1.8.0_102

export PATH=$JAVA_HOME/bin:$PATH

 

刷新配置:source /etc/profile

 

验证:jps或者java -version

 

将jdk分发到其他服务器:

scp -r ./jdk1.8.0_102/ mujinkeji4:/opt

 

scp /etc/profile mujinkeji4:/etc/

source /etc/profile

 

4.7 配置时间同步

使用rpm检查ntp包是否安装:rpm -q ntp

使用yum进行安装:yum -y install ntp

启动ntp服务:systemctl start ntpd

开机启动:systemctl enable ntpd

 

服务器:

vim /etc/ntp.conf

restrict 172.18.231.0 mask 255.255.255.0 nomodify notrap(让172.18.231.0/24网段上的机器能和本机做时间同步)

 

客户端:

vim /etc/ntp.conf

server 172.18.231.111

restrict 172.18.231.111 nomodify notrap noquery

注掉与Internet通信的Server

 

配置好后重启ntp服务:systemctl restart ntpd

 

查看同步的服务器和时差:ntpstat

查看同步的服务器和时差详细列表:ntpq -p

指定同步的服务器:ntpdate mujinkeji1

 

4.8 安装mysql

4.8.1 官网下载mysql

下载网址:https://dev.mysql.com/downloads/mysql/

解压:tar –xf MySQL-5.6.36-1.el7.x86_64.rpm-bundle.tar

解压文件如下:

 

 

 

4.8.2 查看系统原先是否安装

mysql:rpm -qa | grep -i mysql

如果有则通过yum remove **** 卸载

 

4.8.3 安装mysql

rpm –ivh MySQL-server-5.6.36-1.el7.x86_64.rpm

rpm –ivh MySQL-client-5.6.36-1.el7.x86_64.rpm

rpm –ivh MySQL-devel-5.6.36-1.el7.x86_64.rpm

 

安装时如果报如下错误:

warning: MySQL-server-5.6.36-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY

Preparing...                          ################################# [100%]

         file /usr/share/mysql/charsets/README from install of MySQL-server-5.6.36-1.el7.x86_64 conflicts with file from package mariadb-libs-1:5.5.44-2.el7.centos.x86_64

 

这个是因为CentOS 7的默认数据库已经不再是MySQL了,而是MariaDB. MySQL安装时的mysql lib库与mariadb的库、包冲突了

解决办法:

执行以下命令,删除mariadb-libs-1:5.5.44-2.el7.centos.x86_64:

yum -y mariadb-libs-1:5.5.44-2.el7.centos.x86_64

再执行以下命令安装MySQL:

rpm -ivh MySQL-server-5.6.19-1.linux_glibc2.5.x86_64.rpm

一切Ok,安装成功了。

 

4.8.4 修改配置文件位置

cp /usr/share/mysql/my-default.cnf /etc/my.cnf

 

4.8.5 修改配置文件

vim /etc/my.cnf

增加datadir=/******

 

 

4.8.6 初始化数据

/usr/bin/mysql_install_db

 

初始化数据库报错:

FATAL ERROR: please install the following Perl modules before executing /usr/bin/mysql_install_db:

Data::Dumper

 

安装perl-Data-Dumper模组

yum install -y perl-Data-Dumper

 

 

4.8.7 启动mysql

systemctl start mysql

 

报错:

Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.

根据提示查看错误:systemctl status  mysql

 Loaded: loaded (/etc/rc.d/init.d/mysql; bad; vendor preset: disabled)

   Active: failed (Result: exit-code) since Wed 2017-07-19 20:06:25 CST; 34s ago

     Docs: man:systemd-sysv-generator(8)

  Process: 15523 ExecStart=/etc/rc.d/init.d/mysql start (code=exited, status=1/FAILURE)

 

而且此时运行:service mysql status 可以看到错误信息

ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists

 

此时执行命令:service mysql start 也可以看到错误

Starting MySQL.Logging to '/var/mysql/data/mujinkeji1.err'.

 ERROR! The server quit without updating PID file (/var/mysql/data/mujinkeji1.pid).

 这个错误应该是mysql没有权限在/var/mysql/data/目录下创建mujinkeji1.pid文件

 

此时需要先删除/var/lock/subsys/mysql:rm -f /var/lock/subsys/mysql

其次需要给予mysql /var/mysql/目录下所有文件和目录的写权限:chown -R mysql /var/mysql/

其中/var/mysql/data/是在配置文件/etc/my.conf里配置的datadir目录

 

之后再启动mysql service mysql start 成功

 

4.8.8 首次登录mysql

mysql –uroot

 

4.8.9 设置密码

#设置密码:

use mysql;

select host,user,password from user;

update user set password=password('123456') where user='root';

 

4.8.10 设置远程登录

#远程登陆用户设置:

#更新一条数据

update user set host='%' where user='root';

#推荐使用该语句  该语句会插入一条新的数据到user表

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;

 

#刷新设置,使设置生效

flush privileges;

4.8.11 设置开机启动

systemctl enable mysql

 

4.9 创建集群需要用的数据库

#Activty Monitor数据库

create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

 

#hive数据库

create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

 

#oozie数据库

create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

 

#hue数据库

create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

 

5 安装CM

5.1 解压cloudera manager

tar -zxvf cloudera-manager-centos7-cm5.9.0_x86_64.tar.gz -C /opt/

出现:cloudera、cm-5.9.0两个目录

其中cloudera是集群的目录,cm-5.9.0是cloudera manager程序的目录

解压到/opt目录下,不能解压到其他地方,因为cdh5的源会默认在/opt/cloudera/parcel-repo寻找,而CM可以按照个人喜好安装

 

5.2

mkdir /opt/program/

mv /opt/cm-5.9.0/ /opt/program/cm-5.9.0/

ln -s /opt/program/cm-5.9.0/ /opt/cm

 

5.3 移动parcel包

将parcel包移动到/opt/cloudera/parcel-repo目录下,这样安装时CM就能直接找到了。

CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel

CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel.sha

manifest.json

 

5.4 修改cloudera agent配置文件

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

server_host=mujinkeji1

 

5.5 将mysql的JDBC驱动放入CM的lib目录下

cp mysql-connector-java-5.1.42-bin.jar /opt/cm/share/cmf/lib/

 

5.6 为CM创建数据库

/opt/cm/share/cmf/schema/scm_prepare_database.sh mysql cm -hmujinkeji1 -uroot -psdg@joutd --scm-host mujinkeji1 scm scm scm

如果是阿里云服务器可能会报一个scm@"i-wz9cw1gpc5cdhwh935jy"没有权限登录的错误,这可能是因为cm是读取/etc/sysconfig/network配置文件里的HOSTNAME,修改之后就好

 

5.7 拷贝CM到各个节点

scp -r /opt/program mujinkeji4:/opt/

都建立链接:ln -s /opt/program/cm-5.9.0/ /opt/cm

 

5.8 为每个节点创建cloudera-scm用户

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

 

5.9 在主节点启动CM的service服务

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

 

5.10 在从节点启动CM的agent服务

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

 

5.11 设置开机启动cm

1)创建软连接:

在主节点创建软连接:

ln -s /opt/cm/etc/init.d/cloudera-scm-server /etc/init.d/cloudera-scm-server

在所有节点创建软连接:

ln -s /opt/cm/etc/init.d/cloudera-scm-agent /etc/init.d/cloudera-scm-agent

 

2)添加服务:

在主机节点添加开机启动:

chkconfig --add cloudera-scm-server

chkconfig cloudera-scm-server on

在所有节点添加开机启动:

chkconfig --add cloudera-scm-agent

chkconfig cloudera-scm-agent on

 

查看是否添加成功:

chkconfig --list cloudera-scm-server

chkconfig --list cloudera-scm-agent

 

6 安装集群

6.1 登录cloudera manager 界面

http://39.108.176.48:7180

默认用户名:admin

密码:admin

 

 

6.2 勾选然后“继续”

http://images2015.cnblogs.com/blog/631803/201701/631803-20170111004709619-477462317.png

 

6.3 选择版本

http://images2015.cnblogs.com/blog/631803/201701/631803-20170111004733947-2035094614.png

 

6.4 继续

 

 

6.5 为节点指定主机

点击当前主机会显示所有启动了agent的节点

http://images2015.cnblogs.com/blog/631803/201701/631803-20170111004918931-1307434336.png

 

6.6 全部勾上,然后继续

http://images2015.cnblogs.com/blog/631803/201701/631803-20170111005237197-1150983963.png

 

6.7 选择CDH版本,然后继续

点击更多选项,把联网的地址都去掉

 

 

6.8 分发安装集群parcel

整个过程顺利的话大概5分钟

 

 

 

 

6.9 检查各个节点主机情况

 

 

Cloudera 建议将 /proc/sys/vm/swappiness 设置为最大值 10。当前设置为 30。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf,以在重启后保存该设置。您可以继续进行安装,但 Cloudera Manager 可能会报告您的主机由于交换而运行状况不良。以下主机将受到影响:

mujinkeji[1-4]

已启用透明大页面压缩,可能会导致重大性能问题。请运行“echo never > /sys/kernel/mm/transparent_hugepage/defrag”以禁用此设置,然后将同一命令添加到 /etc/rc.local 等初始脚本中,以便在系统重启时予以设置。以下主机将受到影响:

mujinkeji[1-4]

 

 

检查过程中出现两个警告,看着很不爽,必须去掉

1、设置swap空间

vim /etc/sysctl.conf

vm.swappiness=10

 

使用scp批处理拷贝/etc/sysctl.conf到各节点

scp /etc/sysctl.conf mujinkeji4:/etc/

 

使配置生效

sysctl -p

 

2、关闭大页面压缩(每个节点执行)

当前生效:

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

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

 

永久生效(每次开机会执行rc.local里的脚本)

vim /etc/rc.local

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

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

 

使用scp批处理拷贝/etc/rc.local到各节点

scp /etc/rc.local mujinkeji2:/etc/

 

处理完之后全是勾,完美

 

 

6.10集群设置,按需选择

 

 

6.11角色分配,按需分配

 

 

 

6.12 数据库设置

设置之前创建的数据库

这时hue是连不上的,会报错:Unexpected error. Unable to verify database connection.

安装一下:yum install -y python-lxml

有可能还需要安装python的数据库连接包:mysql-connector-python-2.1.6-1.el7.x86_64.rpm

 

 

6.13 审核更改

可以更改,也可以使用默认配置

http://images2015.cnblogs.com/blog/631803/201701/631803-20170111213844025-1314222016.png

 

 

6.14 启动集群

如果安装impala,则需要安装:yum install -y perl
 

启动集群时可能会报JAVA_HOME找不到:

http://images2015.cnblogs.com/blog/631803/201701/631803-20170111232316775-1946893929.png

http://images2015.cnblogs.com/blog/631803/201701/631803-20170111232520056-335841192.png

http://images2015.cnblogs.com/blog/631803/201701/631803-20170111232503713-1285388342.png

find / -type f -name "*.sh" | xargs grep "as ALT_NAME"

定位到/opt/cm/lib64/cmf/service/client/deploy-cc.sh

在deploy-cc.sh中写死JAVA_HOME的位置

vim /opt/cm/lib64/cmf/service/client/deploy-cc.sh

export JAVA_HOME=/opt/jdk1.8.0_102

 

分发到各个节点:

scp /opt/cm/lib64/cmf/service/client/deploy-cc.sh /opt/cm/lib64/cmf/service/client/

刷新配置:

cat /etc/environment

 

 

在启动hive和oozie时会报加载不到连接数据库的driver:

 

https://img-blog.csdn.net/20161128174100721?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

cp mysql-connector-java-5.1.42-bin.jar /opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23//lib/hive/lib/

cp mysql-connector-java-5.1.42-bin.jar /opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23//lib/oozie/lib/

 

如果不行的话就直复制到/var/lib/目录下

cp mysql-connector-java-5.1.42-bin.jar /var/lib/hive/

cp mysql-connector-java-5.1.42-bin.jar /var/lib/oozie/

 

 

6.15 安装成功

 

 

 

HUE连接不上Hive,报错:

Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found

解决方法:

yum install cyrus-sasl-plain  cyrus-sasl-devel  cyrus-sasl-gssapi

 

 

3.15

 

kafka启动可能失败:应为默认设置的Java Heap Size太小,推荐256M

 

 

如果启动spark-shell是报错:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream

修改如下配置:export SPARK_DIST_CLASSPATH=$(hadoop classpath)

 

 

 

此时spark-shell可以启动成功,但启动过程中会报错:

java.lang.IllegalArgumentException: Required executor memory (1024+384 MB) is above the max threshold (1024 MB) of this cluster! Please check the values of 'yarn.scheduler.maximum-allocation-mb' and/or 'yarn.nodemanager.resource.memory-mb'.

意思是executor需要1024+384 MB而yarn配置的执行容器的的最大内存只有1024M,此时增大配置到1512M,记得minimum和maximum都看一下保证minimum比maximum小否则yarn会启动失败如下图:

 

 

 

接着可能会出现spark没有权限读取hdfs文件的的错误:

ERROR spark.SparkContext: Error initializing SparkContext.

org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x

此时设置dfs.permissions为false:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值