CDH 6.1.1完全离线安装分享

CDH 6.1.1完全离线安装分享

  • 前言
  • 说明
  • 安装步骤
    • 一、虚拟机IP配置
    • 二、配置hostname
    • 三、配置hosts
    • 四、禁用防火墙
    • 五、卸载mariadb软件
    • 六、禁用SELinux功能
    • 七、配置SSH 登陆端口
    • 八、安装软件
    • 九、所有的机器都相同的安装
    • 十、配置时钟同步
      • 1、server服务器配置
      • 2、client 服务配置
    • 十一、配置 repos服务
      • 1、下载
      • 2、拷贝到一台网路环境比较好的机器上
      • 3、解压缩,建立rpm包服务器
      • 4、每台机器上都配置repo源
    • 十二、安装JDK
    • 十三、 安装Cloudera Manager Server
    • 十四、安装数据库
      • 1、外网环境上下载MySQL 的rpm包
      • 2、安装
      • 3、配置
      • 4、启动并修改密码
      • 5、新建cloudera manager 需要的用户和库
      • 6、安装mysql的JDBC驱动
    • 十五、运行cloudera脚本
    • 十六、启动Cloudera Manager Server

前言

这个blog我是在火车上写的,写了2个多小时,中间如果有任何不明白的地方,请给我留言或者给我发邮件 [email protected] ,我看到了一定回,因为我来来回回弄了好久,刚开始直接通过hadoop原生安装,安装完成之后,又重新安装的CDH,因为CDH确实还是方便很多,可以直接web上监控服务器状态信息,添加主机,停服务都很方便,一个多星期的努力全在这篇blog上,有任何不对的地方,请指正,不能误人子弟。这篇仅供参考,最好的文档永远是官网,当然,官网有时候也出错,那就看你自己解决问题的能力了。

说明

  1. 安装系统,本blog继续纯净版CenteOS 7系统。具体版本为:CentOS-7-x86_64-Minimal-1810.iso,官网下载。
  2. 安装集群为全内网环境,安装文件通过U盘拷贝,且文件不能通过U盘考到外网环境。
  3. 我装的9台机器作为CDH集群,全为虚拟机环境,真机(配置:128G内存,32核CPU,硬盘10TB)通过ESXI 6.7虚拟两台机器,9台均为相同配置虚拟机。8台作为CDH集群,一台作为应用服务器。
  4. CDH 版本为6.1.1官网下载。
  5. 准备一台可以联网的机器,安装一个虚拟机,装上相同的操作系统,为了下依赖用。

安装步骤

一、虚拟机IP配置

具体网卡名称通过 ip addr 查看,ifcfg-* 中的* 表示网卡名称

vi /etc/sysconfig/netwok-scripts/ifcfg-*

内网机器,配置静态IP,需要添加或者修改的配置如下:

IPADDR=0.0.0.0				# 机器IP地址
NETMASK=255.255.255.0		# 机器子网掩码
GATEWAY=0.0.0.0				# 机器网关
ONBOOT=yes					
BOOTPROTO=static			# 机器IP地址获取方式,static 或者 dhcp

重启network

service network restart

检测是否能ping通其他内网机器,若无法ping通,查看ESXI配置,是否是桥接模式且宿主机器网络是否联通。

二、配置hostname

CDH要求集群中的机器的hostname满足FQDN(Fully Qualified Domain Name)命名规范,如 node01.example.com。

hostnamectl set-hostname node01.example.com

查看主机名称

hostname

强烈建议在执行特殊操作之前,确认主机名称,因为当主机过多之后,可能由于当前主机SSH 登陆其他机器,从而命令在其他机器上执行,导致错误。

三、配置hosts

配置hosts的目的在于CDH能够通过主机名称或者别名登陆其他机器。

vi /etc/hosts

具体配置如

1.1.1.1 foo-1.example.com foo-1 
2.2.2.2 foo-2.example.com foo-2 
3.3.3.3 foo-3.example.com foo-3 
4.4.4.4 foo-4.example.com foo-4

四、禁用防火墙

CDH运行过程中,可能会因为防火墙的原因,会有特殊的问题,建议关闭防火墙,如果不能关闭,那需要逐条配置端口规则。

systemctl stop firewalld		# 停止防火墙
systemctl disable firewalld 	# 禁用防火墙

五、卸载mariadb软件

mariadb 是centeOS 7 自带的数据库,这里卸载是因为会跟mysql的部分功能产生冲突,如果你的CM的管理要用mariadb 或者已经安装了其他的数据库软件,那么这步跳过,且下文的数据库配置部分严格按照官网(https://www.cloudera.com/documentation/enterprise/6/latest/topics/installation.html )的要求完成。

rpm -qa |grep mariadb		# 检查是否安装了mariadb
yum remove mariadb*			# 卸载mariadb

六、禁用SELinux功能

首先查看 SELinux功能是否开启

getenforce

如果显示Permissive 或者 Disabled 该步骤直接跳过,如果是enforcing ,进行下一步

vi /etc/selinux/config 或者 vi /etc/sysconfig/selinux

设置 SELINUX=enforcing 为 SELINUX=permissive

setenforce 0 			# 让设置生效

七、配置SSH 登陆端口

如果服务器采用 默认22 端口,则该步骤跳过,如果需要修改,则

vi /etc/ssh/sshd_conf 			#我写这篇文章的时候,正在火车上,这个地方的文件名称有点忘记了,是一个sshd开头的配置文件,直接sshd+tab可以出来

将 #Port 22 修改为 Port 你要的端口, #号去掉
重启sshd 服务

systemctl restart sshd

八、安装软件

这个地方是离线安装CDH的重点,也是难点,因为离线安装,依赖文件太多太多,导致安装很困难,这个告诉你们一个高效的获取rpm的方式。 自己找一台可以联网的机器,安装一个虚拟机,装上相同的操作系统,什么其他的软件都不要安装,如果你的内网环境rpm的时候,需要什么依赖,你就直接在可以联网的机器上执行,执行的命令为:

yum -install --downloadonly --downloaddir=./你的软件 你的软件

然后就会只下载,不安装,通过U盘拷贝到内网环境 执行

rpm -ivh ./*.rpm --nodeps --force

这条命令中 --nodeps 是不检查依赖 --force是覆盖安装,安装即可。
我把需要的软件都下载下来了,如果想免去麻烦,就在 这里 下载,可能有点大(这个C币不知道咋回事,自动需要的,如果没有C币,给我发邮件,我传给你)。下完之后,挨个文件夹执行也行,拷到一个文件夹,一次性执行也行,记得加上 --nodeps --force
或者点击我的blog 下载,里面也是全的。

九、所有的机器都相同的安装

将上面的步骤,安装到所有的集群机器上

十、配置时钟同步

CDH集群的所有机器都需要时钟同步,时间差距需要在10分钟以内。在集群中找一台机器当时钟同步的server ,其他机器直接从这个server上同步时间。

1、server服务器配置

修改系统时间

timedatectl set-ntp no 						# 关闭ntp
timedatectl set-time "2018-07-05 15:06:00"	# 设置时间
timedatectl set-timezone Asia/Shanghai		# 设置时区
date										# 查看配置是否正确

配置时钟同步server

vi /etc/ntp.conf

对应修改

restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap     # 允许内网其他机器同步时间
server 127.127.1.0     #外部时间服务器不可用时,以本地时间作为时间服务
fudge  127.127.1.0 stratum 10

如果对上面的配置有疑问,可以自行百度查询,因为我也是百度的。
重启ntp 服务

service ntpd restart

关闭chronyd服务

systemctl disable chronyd.service

设置开机启动

systemctl enable ntpd.service 

同步时间

ntpstat

查看ntp服务的状态是否正确

systemctl status ntpd.service

至此,ntp的server配置完成

2、client 服务配置

vi /etc/ntp.conf

对应修改

server 10.121.2.106  #<--该IP是NTP主机端的IP
restrict  10.121.2.106  nomodify notrap noquery   # 允许上层时间服务器主动修改本机时间

执行

ntpdate -u 10.121.2.106					# 强制同步时间
service ntpd restart					# 重启时钟同步服务
systemctl disable chronyd.service		# 禁用chronyd服务
systemctl enable ntpd.service			# 开机启动
ntpstat									# 查看同步状态

如果同步状态展示中,显示了ntp server的信息,表示同步成功,如果没有,那就等一会儿再执行看看

十一、配置 repos服务

CDH中 CM服务和CDH服务都需要很多很多的相关依赖,一共有5个G左右,具体我就不上传了,你们可以通过官网(https://www.cloudera.com/documentation/enterprise/6/latest/topics/cm_ig_create_local_parcel_repo.html )自己找,CM的安装通过自建rpm的库,而CDH组建,我这里也是自建rpm库的方式,如果你要通过peral的方式安装,也可以,官方很支持,请查看官网自己建立,我这里只讲自建rpm库的方式。

1、下载

怎么下载?通过可以联网的机器下载

mkdir -p /var/www/html/cloudera-repos
wget https://archive.cloudera.com/cm6/6.1.1/allkeys.asc -P /var/www/html/cloudera-repos/cm6/6.1.1/
wget --recursive --no-parent --no-host-directories https://archive.cloudera.com/gplextras6/6.1.1/redhat7/ -P /var/www/html/cloudera-repos
wget --recursive --no-parent --no-host-directories https://archive.cloudera.com/cdh6/6.1.1/redhat7/ -P /var/www/html/cloudera-repos
wget --recursive --no-parent --no-host-directories https://archive.cloudera.com/cm6/6.1.1/redhat7/ -P /var/www/html/cloudera-repos

2、拷贝到一台网路环境比较好的机器上

将cloudera-repos文件夹,打包拷到内网环境中,因为大小超过4G ,所以可以采用压缩软件分包或者直接用一个NTFS格式的U盘。

3、解压缩,建立rpm包服务器

cd到 cloudera-repos 同级目录

python -m SimpleHTTPServer 8900

这里就是一个临时的服务,安装完成之后CDH所有组件之后,可以ctrl + c 就停止了。

4、每台机器上都配置repo源

删除CenteOS 自带的源,因为你无法访问外网,不删除会报错

rm -rf /etc/yum.repos.d/Centos*
vi /etc/yum.repos.d/cloudera-repo.repo

添加

[cloudera-repo]
name=cloudera-repo
baseurl=http://127.0.0.1:8900/cloudera-repos/cm6/6.1.1/redhat7/yum/
enabled=1
gpgcheck=0 

里面的IP对应的是你的rpm包的服务器ip

在添加一个CDH组件的包源

vi /etc/yum.repos.d/cloudera-repo-cdh.repo
cloudera-repo-cdh]
name=cloudera-repo-cdh
baseurl=http://127.0.0.1:8900/cloudera-repos/cdh6/6.1.1/redhat7/yum/
enabled=1
gpgcheck=0

清理 repos 源

yum clean all

自此,所有的配置都已经结束,开始安装!!!!

CM的安装就找集群里面的一台机器安装,成功之后,通过web页面可以可视化的自动把集群中其他机器安装CM服务和CDH组件。

十二、安装JDK

yum install oracle-j2sdk1.8

配置环境变量
这里我就不说了,建议配置在 /etc/profile 里面

source /etc/profile #让配置生效

十三、 安装Cloudera Manager Server

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

这里有几个G的文件,万兆内网交换机的话,也很快的。主要是agent的依赖多,如果你不安装上面的依赖,就要在这里停留好长时间

由于你们站在我的肩膀上,这一步估计也就1分钟左右吧。

十四、安装数据库

强烈建议根据官网https://www.cloudera.com/documentation/enterprise/6/latest/topics/cm_ig_installing_configuring_dbs.html 对照安装

如果安装5.7的mysql ,请往下看,如果不是,请移步官网,装好了在回来看十五。

1、外网环境上下载MySQL 的rpm包

下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads

mysql依赖net-tool ,如果你在上面安装了我的依赖的话,那可以直接装,如果没有,那要自己下了之后安装net-tool

2、安装

安装 common 包,安装 lib* 包,安装 client 包,安装server 包。注意顺序,其他rpm不用安装,如果一定要装的话,可能需要其他的依赖。这里rpm包不用加 --nodeps --force 了,正常 rpm -ivh *.rpm 就可。

3、配置

我这的配置 是cloudera 的官方配置,但是log-error 这一行我修改了位置,放到了mysqld 里面,因为不放在这里面,不会写日志,查看不了初始密码,很坑。

vi /etc/my.cnf
[mysqld]
# cloudera官网的推荐配置中,log-error是放在mysqld-safe模块中,不对,日志不会打印,至少5.7是这样
log-error=/var/log/mysqld.log
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
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 = 32M
thread_stack = 256K
thread_cache_size = 64
query_cache_limit = 8M
query_cache_size = 64M
query_cache_type = 1

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.
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
innodb_flush_method = O_DIRECT
innodb_log_file_size = 512M

[mysqld_safe]

pid-file=/var/run/mysqld/mysqld.pid

sql_mode=STRICT_ALL_TABLES

4、启动并修改密码

#启动MySQL
systemctl start mysqld
#查看初始密码
grep 'temporary password' /var/log/mysqld.log
#通过初始密码登陆
mysql -uroot -p
#修改root用户的密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

注意mysql的密码需要大小写,数字,字符,不然不通过。

5、新建cloudera manager 需要的用户和库

直接执行就好

# 为 Cloudera Software 创建数据库
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 'MyNewPass4!.';
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY 'MyNewPass4!.';
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'MyNewPass4!.';
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'MyNewPass4!.';
GRANT ALL ON metastore.* TO 'metastore'@'%' IDENTIFIED BY 'MyNewPass4!.';
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'MyNewPass4!.';
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'MyNewPass4!.';
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY 'MyNewPass4!.';
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'MyNewPass4!.';

6、安装mysql的JDBC驱动

我的依赖包中有 一个mysql-connector-java-5.1.47.tar.gz(如果你没下载我的依赖包,就自己在官网上找一个,很简单),找一个位置,执行

tar zxvf mysql-connector-java-5.1.47.tar.gz 
mkdir -p /usr/share/java/
cd mysql-connector-java-5.1.47
cp mysql-connector-java-5.1.47-bin.jar /usr/share/java/mysql-connector-java.jar

自此 ,数据库的安装工作结束

十五、运行cloudera脚本

运行下面的脚本,告诉cloudera 你建立的数据库用户密码等信息

/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm MyNewPass4!.
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql amon amon MyNewPass4!.
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql rman rman MyNewPass4!.
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql hue hue MyNewPass4!.
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql metastore metastore MyNewPass4!.
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql sentry sentry MyNewPass4!.
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql nav nav MyNewPass4!.
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql navms navms MyNewPass4!.
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql oozie oozie MyNewPass4!.

十六、启动Cloudera Manager Server

systemctl start cloudera-scm-server

启动需要一点时间,可以通过日志,查看进度

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

启动成功之后 访问http://:7180
用户名和密码都是admin

自此,CM的安装结束,剩下就可视化安装CDH了了。

你可能感兴趣的:(blog,大数据,java,CDH,离线安装,CenteOS,7,CDH,6.1.1)