您的位置:首页 > Web前端 > HTML5

CDH5.12.0 (5.X)安装笔记(离线parcel安装)

2017-08-23 16:15 316 查看
安装参考 http://blog.csdn.net/qq_23660243/article/details/60870527

操作系统:CentOS 7.3

本教程采用虚拟机安装CDH的完全分布式。


机器环境配置


配置虚拟机与安装系统

本教程选择VMware 10 作为虚拟机运行工具。

首先,需要配置虚拟机的虚拟网络,以及为虚拟机和物理主机之间配置网关,使虚拟机能够连上网络。

打开Vmware,编辑-> 虚拟网络编辑器-> 子网IP (192.168.2.0) 子网掩码(255.255.255.0)->  应用 -> 确定





回到windows --> 打开网络和共享中心 -> 更改适配器设置 -> 右键VMnet8 -> 属性 -> 双击IPv4 -> 设置windows的IP:192.168.2.2子网掩码:255.255.255.0  ,网关 192.168.2.1,

首选DNS :8.8.8.8,备用DNS:114.114.114.114





安装CentOS

使用VMware安装CentOS,由于自己笔记本内存8G,为了流畅运行CentOS,选择最小(Mini)版安装即可。

设置主节点机器内存为:2G,处理器:1,核心数:1。(其余节点,设置内存为:512M,处理器:1,核心数:1)

创建用户 :hadoop  密码:hadoop


修改普通用户执行权限

让普通用户具备sudo执行权限

切换到root

然后  vi /etc/sudoers   加入一行
root    ALL=(ALL)       ALL
hadoop  ALL=(ALL)       ALL


关闭防火墙和selinux

关闭firewall:
[root@hadoop ~]# systemctl stop firewalld.service      #停止firewall
[root@hadoop ~]# systemctl disable firewalld.service   #禁止firewall开机启动
[root@hadoop ~]# firewall-cmd --state                  #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)


配置网关和IP

查询此虚拟机正在运行的网卡
[root@hadoop ~]# ifconfig




可以看到该虚拟机的网卡为 ens33 .

接下来,修改网卡配置文件
[root@hadoop ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33

需要将配置文件中修改(或添加)项 如下:
BOOTPROTO="static" #dhcp改为static 

ONBOOT="yes" #开机启用本配置  

IPADDR=192.168.2.110 #静态IP

GATEWAY=192.168.2.1 #默认网关 

NETMASK=255.255.255.0 #子网掩码 

DNS1=192.168.2.1 #DNS 配置

配置完毕,重启网卡。并查询一下本机的ip地址。
[root@hadoop ~]# systemctl restart network
[root@hadoop ~]#  ip addr

回到windows,检测一下物理主机能否ping通虚拟机(本人物理主机使用windows系统)
ping 192.168.2.110

回到虚拟机,检测一下虚拟机能否ping通网络
ping www.baidu.com

若都能ping通,则表示网卡网关配置成功!



通过Secure CRT远程连接虚拟机

在物理主机安装 Secure CRT 软件,输入hostname和username对虚拟机进行远程连接。




修改主机名

修改hosts文件和hostname文件
vi /etc/hosts    #在hosts文件中添加记录,192.168.2.110 master


vi /etc/hostname   # 把文件中原来的名字去掉,修改为 master
vi /etc/sysconfig/network   #把文件中的主机名修改为 master

再次查询,可见主机名已经更改。




更改yum源

yum源都在国外,我们现在更改为 163 的源。(因为本教程中是在CentOS 7 利用yum安装 mysql 5.7,aliyun源缺少相关组件,不建议使用 )

下载  CentOS7-Base-163.repo 文件,将虚拟机中的源 进行备份,并替换掉。
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

在Secure CRT 中,上传下载的 CentOS7-Base-163.repo  文件,同时按下 alt + p 后,出现sftp窗口,然后put d:\CentOS7-Base-163.repo  

文件会上传至 /home/hadoop 根目录中

接下来,将文件放到 /etc/yum.repos.d 中,并重命名称。
mv /etc/yum.repos.d/CentOS7-Base-163.repo /etc/yum.repos.d/CentOS-Base.repo

接下来,我们要makecache一下,然后更新包。
yum makecache
yum update

过程可能很长,y输入一直继续。

至此,yum源更新完毕。


安装JDK

虽然 jdk1.7 已经停止维护了,但是根据cloudera官方的文档表示,支持的jdk1.8,会使某些组件运行不正常。所以,根据官方文档,选择了 jdk-7u80-linux-x64.tar.gz (注意:7u80是已经测试的版本,不同的jdk7更新版本 支持能力不同)
上传 jdk-7u80-linux-x64.tar.gz 文件。上传alt+p 后出现sftp窗口,然后put d:\ jdk-7u80-linux-x64.tar.gz 

解压jdk。 创建文件夹 
mkdir /home/hadoop/app

解压
tar -zxvf jdk-7u80-linux-x64.tar.gz -C /home/hadoop/app



将java添加到环境变量中
vi /etc/profile

在/etc/profile文件最后添加
export JAVA_HOME=/home/hadoop/app/jdk-7u_65-i585 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASSPATH     
export PATH=$JAVA_HOME/bin:$PATH  



刷新配置    
source /etc/profile

检测安装是否成功。
java -version




修改hosts文件

(因为是用虚拟机配置完全分布式,所以,提前在/etc/hosts中配置好所节点的IP和主机名)

    我们在/etc/hosts中修改、添加如下内容:   

         192.168.2.110  master
         192.168.2.111  slave1
         192.168.2.112  slave2

这里,我们配置一个主节点,两个从节点。


安装配置MySQL

我们需要一个外部数据库来存储集群的信息,我们使用MySQL。这里,我们采用MySQL的最新版:5.7,包采用   mysql57-community-release-el7-11.noarch.rpm   

根据Cloudera的官方文档,MySQL的5.7是支持的。

注意:由于centos 7不支持 mysql的版本,所以,我们需要用rpm包来进行安装。下图显示无法直接使用yum命令安装mysql。



然后,我们开始安装mysql的rpm包,此处注意,我们只在master上安装:
rpm -ivh mysql57-community-release-el7-11.noarch.rpm

然后我们更新yum(一直输入 y ):

yum update



然后安装mysql-server(一直输入 y ):
yum install mysql-server

接下来,设置mysql开机启动:
systemctl enable mysqld.service

然后启动mysql:
systemctl start mysqld

接下来,设置root用户密码:

由于mysql 5.7 或是更高版本,在安装完成后会生成随机密码,而且保存在mysql的error log日志里面,所以,需要查询随机密码,并修改密码。

如下,以前版本的mysql默认没有密码,但是mysql5.7会报错误
[root@master local]# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

查询随机密码:
sudo grep 'temporary password' /var/log/mysqld.log   NT,M85Z/kAw_

修改mysql密码: mysqladmin -u root -p password "111111" 然后输入之前的密码(这是我的随机密码  : 4bqK(h3ly<Gy)
[root@master local]# mysqladmin -u root -p password "111111"
Enter password:
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
mysqladmin: unable to change password; error: 'Your password does not satisfy the current policy requirements'

此时,可以发现,设置的新密码太弱了,不满足当前的密码策略,这个错误和密码安全等级相关,查看安全等级命令如下:
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+

关于安全等级更详细的介绍如下
LOW 政策只测试密码长度。 密码必须至少有8个字符长。
MEDIUM 政策的条件 密码必须包含至少1数字字符,1 大写和小写字符,和1特别 (nonalphanumeric)字符。
STRONG 政策的情况 密码子字符串长度为4的或更长时间不能匹配 单词在字典文件中,如果一个人被指定。

所以,我们可以修改默认密码策略(详细参考 : http://professor.blog.51cto.com/996189/1783769),这里,我们直接关闭validate_password 插件。

直接通过 my.cnf 配置文件关闭 validate_password 插件。

只需要添加一行 :

validate_password = off

再进行查询时,可以看到validate_password插件已经关闭了。



最后,为了解决密码失效问题,要在配置文件的[mysqld]字段下,增加字段(不知道 my.cnf 文件在哪里,可以使用 whereis my.cnf 命令查找)

[mysqld]

default_password_lifetime=0

修改字符集:(https://my.oschina.net/glenxu/blog/808631





重启mysql服务: 
shell > systemctl restart mysqld

修改mysql 的 root 用户密码
[root@master local]# mysqladmin -u root -p password "111111"
Enter password:

测试密码是否修改成功:
[root@master local]# mysql -u root -p
Enter password:


安装配置NTP

安装ntp服务,使服务器同步。
yum -y install ntp

更改配置文件/etc/ntp.conf

在master节点namenode节点,注释掉原有的server指向,把时间服务器的域名地址指向一个靠谱可连的时间服务器,我选择的是ntp.api.bz.
# vi /etc/ntp.conf
……
#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
server ntp.api.gz iburst
......

设置系统开机自动启动,并启动ntp服务。
systemctl enable ntpd
systemctl start ntpd


VMware克隆机器

创建快照



根据快照,克隆虚拟机











至此,我们已经拥有三个节点的机器,新克隆出来的机器需要进行另外的配置。


修改新克隆机器上的主机名

vi /etc/hostname   # 把文件中原来的名字去掉,修改为 本主机名称(slave1/slave2)
vi /etc/sysconfig/network   #把文件中的主机名修改为本主机名称 (slave1/slave2)


修改新克隆机器上的IP地址

修改另外两台节点的IP,如下:
IPADDR=192.168.2.111 #静态IP(slave1)
IPADDR=192.168.2.112 #静态IP(slave2)

利用Secure CRT 进行远程连接配置。


修改新克隆机器上的NTP配置

修改另外两台节点的 配置文件/etc/ntp.conf,把时间服务器的server指向master namenode节点
# vi /etc/ntp.conf
……
#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
server 192.168.2.110 iburst
......

启动NTP,并设置开机启动。
systemctl start ntpd
systemctl enable ntpd



配置SSH免密码登录

每台机器执行:ssh-keygen -t rsa,一路回车

输入命令 ll -a ,  可以查看到 .ssh 目录。

生成两个文件,一个私钥,一个公钥,在master(/home/hadoop/.ssh)中执行:

cp id_rsa.pub authorized_keys
本机无密钥登录

               修改authorized_keys权限:chmod 644 authorized_keys

               此时重启ssh服务:(sudo systemctl restart sshd.service)sudo service sshd restart

               ssh master
master与其他节点无密钥登录         

               从master中把authorized_keys分发到各个结点上:
scp /home/hadoop/.ssh/authorized_keys slave1:/home/hadoop/.ssh
scp /home/hadoop/.ssh/authorized_keys slave2:/home/hadoop/.ssh

           然后在各个节点对authorized_keys执行(一定要执行该步,否则会报错):chmod 644 authorized_keys

尝试在master上,通过ssh连接 slave1



    

备注:可以修改成这一句话。
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server


Cloudera安装开始


安装Cloudera manager

下载CM包: http://archive.cloudera.com/cm5/cm/5/    选择  cloudera-manager-centos7-cm5.12.0_x86_64.tar.gz 版本下载。

现在我们要正式开始安装cloudera manger了,首先把我们事先下载好的cloudera manager上传到各个机器,并解压。
alt + p 通过SFTP 上传文件。
然后,把文件解压到 /opt 目录下(每台机器都如此)

接下来,我们要在所有机器上配置主节点主机的名字:
vi /opt/cm-5.12.0/etc/cloudera-scm-agent/config.ini

例如,在master主机上,就把这个配置文件修改成如下。同样的,在slave1主机上,修改为master,在slave2主机上,修改为master。



接下来,我们要在所有机器上创建用户,
sudo useradd --system --home-dir /opt/cm-5.12.0/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

接下来我们要为cloudera manager建立数据库,不过在此之前我们需要下载msyql数据库驱动下载地址:http://dev.mysql.com/downloads/connector/j/



下载 文件后,我们解压,把 mysql-connector-java-5.1.42-bin.jar 文件上传到/opt/cm-5.12.0/share/cmf/lib/目录下:
cp mysql-connector-java-5.1.42-bin.jar /opt/cm-5.12.0/share/cmf/lib/

并把该驱动文件,传到其他节点对应的目录中:
scp mysql-connector-java-5.1.42-bin.jar slave1:/opt/cm-5.12.0/share/cmf/lib/
scp mysql-connector-java-5.1.42-bin.jar slave2:/opt/cm-5.12.0/share/cmf/lib/

之后,我们开始在主节点创建数据库,CM给了脚本自动创建数据库,所以,我们只需要运行该脚本即可:
/opt/cm-5.12.0/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -p111111 --scm-host localhost scm 111111

其中111111是数据库的root用户密码,而后面的111111是新的用户scm的密码。



运行完脚本文件,可以查看一下mysql是否有该数据库。



现在,我们开始启动 Cloudera Manager , 首先在master上启动 server :
/opt/cm-5.12.0/etc/init.d/cloudera-scm-server start



然后我们在所有机器上启动agent:
/opt/cm-5.12.0/etc/init.d/cloudera-scm-agent start















安装CDH

采用parcels 包,离线安装。  下载CDH包:http://archive.cloudera.com/cdh5/parcels/5.10/     选择5.10版本的CDH,最新版本5.12的CM,不支持5.12的CDH。
CDH-5.10.2-1.cdh5.10.2.p0.5-el7.parcel
CDH-5.10.2-1.cdh5.10.2.p0.5-el7.parcel.sha1
manifest.json

(其中,下载结束后,要把 *.sha1 文件修改为 *.sha  )

然后,把三个文件一起放到 /opt/cloudera/parcel-repo/ 目录下(只是主节点如此操作):

mv CDH-5.10.2-1.cdh5.10.2.p0.5-el7.parcel /opt/cloudera/parcel-repo/
mv CDH-5.10.2-1.cdh5.10.2.p0.5-el7.parcel.sha /opt/cloudera/parcel-repo/
mv manifest.json /opt/cloudera/parcel-repo/


安装accumulo (CM 5.12 web安装界面要求安装accumulo ,其他版本未测试)

采用parcels 包,离线安装。 下载accumulo包  :  https://archive.cloudera.com/accumulo-c5/parcels/latest/   
ACCUMULO-1.7.2-5.5.0.ACCUMULO5.5.0.p0.8-el7.parcel
ACCUMULO-1.7.2-5.5.0.ACCUMULO5.5.0.p0.8-el7.parcel.sha1
manifest.json

(其中,下载结束后,要把 *.sha1 文件修改为 *.sha)

然后,把三个文件一起放到 /opt/cloudera/parcel-repo/ 目录下(只是主节点如此操作):
mv ACCUMULO-1.7.2-5.5.0.ACCUMULO5.5.0.p0.8-el7.parcel /opt/cloudera/parcel-repo/
mv ACCUMULO-1.7.2-5.5.0.ACCUMULO5.5.0.p0.8-el7.parcel.sha /opt/cloudera/parcel-repo/
mv manifest.json /opt/cloudera/parcel-repo/

由于虚拟机分配的内存不够,可能程序运行要等5~8分钟的时间才能启动完毕。

我们在master上查看相应端口是否已经打开(如果没有查到结果,请耐心等候一下):
netstat -ntlp | grep 7180

终于等到查询到端口结果:



最后,我们在浏览器查看:

http://192.168.2.110:7180

登陆,我们进入到如下界面(默认账号和密码: admin   admin),先不要着急点击继续:










Cloudera启动和配置


安装Cloudera manager

我们在刚才的网页,点击 “接受”  和 “继续” 。我们选择了 免费版 。





如下图所示,在 其他Parcel 中 选择自己需要安装的 组件。

















接下来,就可以对集群进行安装。






解决办法:



【注意】如果选择的组件越来越多,内存开销也会随之增大,所以,主节点的内存当然是越大越好。


问题解决

前端web页面 ,提示“当前 Cloudera Manager 版本,不能显示太新的CDH”,无法选择安装CDH版本。其实,在出现这个错误之前,可以查看cm的安装日志,已经出现了错误。

如下的错误一:



解决方式:

在每个节点上,创建该目录,并授权



错误二:

无法连接远程仓库。



解决方式:

不用理。因为这次是离线安装。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息