1.环境准备
1.1 虚拟机准备
克隆三台虚拟机(hadoop01、hadoop02、hadoop03),配置好对应主机的网络IP、主机名称、关闭防火墙。
设置hadoop01、hadoop02、hadoop03的主机对应内存分别是:12G、4G、4G
1.1.1 修改 ifcfg-eth0 网卡配置文件(hadoop02、hadoop03)
vim /etc/sysconfig/network-scripts/ifcfg-eth0
删除HWADDR、UUID
修改网卡名称:DEVICE=eth0(hadoop02、hadoop03一样)
修改相应IP:
IPADDR=192.168.226.89(hadoop02)
IPADDR=192.168.226.90(hadoop03)
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.226.88
NETMASK=255.255.255.0
GATEWAY=192.168.226.2
#DNS1配置用于连接外网
DNS1=8.8.8.8
IPV6INIT=no
USERCTL=no
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
NAME="System eth0"
LAST_CONNECT=1528766623
1.1.2 修改系统网卡配置(hadoop02、hadoop03)
vim /etc/udev/rules.d/70-persistent-net.rules
删除NAME=“System eth0”,将NAME="System eth1"值改为eth0,更改后如下:
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:87:a9:a8", ATTR{type}=="1", KERNEL=="eth*", NAME="System eth0"
重启生效 reboot
1.1.3 修改主机名和IP的映射关系
修改主机名(hadoop01、hadoop02、hadoop03)
vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop01
修改IP的映射关系(hadoop01、hadoop02、hadoop03)
vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.226.88 hadoop01
192.168.226.89 hadoop02
192.168.226.90 hadoop03
1.1.4 关闭防火墙,禁止自启(hadoop01、hadoop02、hadoop03)
service iptables status 查看
service iptables stop 关闭
chkconfig iptables off 禁止自启
1.2 SSH免密登录
1.2.1 生成公钥和私钥
cd ~/.ssh/
[root@hadoop01 .ssh]$ ssh-keygen -t rsa
三次回车键后,当前路径下会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
1.2.2 将公钥拷贝到要免密登录的目标机器上
[root@hadoop01 .ssh]$ ssh-copy-id hadoop01
[root@hadoop01 .ssh]$ ssh-copy-id hadoop02
[root@hadoop01 .ssh]$ ssh-copy-id hadoop03
1.2.3 重复上述两个步骤
配置hadoop02对hadoop01、hadoop02、hadoop03三台服务器免密登录
配置hadoop03对hadoop01、hadoop02、hadoop03三台服务器免密登录
1.3 集群时间同步(ntpd服务配置,未联网状态下)
参考:https://my.oschina.net/longkingxu/blog/3012553
1.3.1 配置授时节点(hadoop01)
vim /etc/ntp.conf ,添加:
server 127.127.1.0
#"fudge"定义了这个时钟的级别,如果没有这个记录,节点就是一级服务器。将级别重新定义为10是个好的办法,这样客户端在查询这个服务器的时候就会知道这个服务器不是一个可靠的时间源.
fudge 127.127.1.0 stratum 10
1.3.2 配置被授时节点(hadoop02、hadoop03)
vim /etc/ntp.conf ,添加:
server hadoop01 iburst
1.3.3 启动服务和检查
所有节点执行 service ntpd start
检查 ntpq -p
1.4 安装JDK(hadoop01、hadoop02、hadoop03)
1.4.1 hadoop01上解压,并修改文件的所有者和所有者组为root
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /usr/local
chown -R root:root jdk1.8.0_144/
1.4.2 配置JDK环境变量
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_152/
export PATH=$PATH:$JAVA_HOME/bin
1.4.3 测试hadoop01节点
让文件生效 source /etc/profile
测试 java -version
1.4.4 分发到其他节点
scp -r /usr/local/jdk1.8.0_152/ hadoop02:/usr/local
scp -r /usr/local/jdk1.8.0_152/ hadoop03:/usr/local
scp -r /etc/profile hadoop02:/etc
scp -r /etc/profile hadoop03:/etc
1.4.5 分别测试其他节点
source /etc/profile
java -version
1.5 安装MySQL (主节点上安装即可)
注意:一定要用root用户操作如下步骤;先卸载MySQL再安装
1.5.1 查看MySQL是否安装
rpm -qa|grep mysql
1.5.2 如果安装了MySQL,就先卸载
rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64
1.5.3 上传mysql-libs.zip到hadoop01的/usr/local目录,并解压文件到当前目录
[root@hadoop102 software]# unzip mysql-libs.zip
[root@hadoop102 software]# ls
mysql-libs.zip
mysql-libs
1.5.4 安装MySQL服务器
[root@hadoop01 mysql-libs]# ll
-rw-r–r--. 1 root root 18509960 3月 26 2015 MySQL-client-5.6.24-1.el6.x86_64.rpm
-rw-r–r--. 1 root root 3575135 12月 1 2013 mysql-connector-java-5.1.27.tar.gz
-rw-r–r--. 1 root root 55782196 3月 26 2015 MySQL-server-5.6.24-1.el6.x86_64.rpm
安装服务端
[root@hadoop01 mysql-libs]# rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm
查看产生的随机密码
[root@hadoop01 mysql-libs]# cat /root/.mysql_secretOEXaQuS8IWkG19Xs
查看状态并启动服务
[root@hadoop01 mysql-libs]# service mysql status
[root@hadoop01 mysql-libs]# service mysql start
1.5.5 安装MySQL客户端
安装客户端
[root@hadoop01 mysql-libs]# rpm -ivh MySQL-client-5.6.24-1.el6.x86_64.rpm
连接MySQL(密码替换成产生的随机密码)
[root@hadoop01 mysql-libs]# mysql -uroot -pOEXaQuS8IWkG19Xs
修改密码
mysql>SET PASSWORD=PASSWORD(‘新密码’);
1.5.6 MySQL中user表中主机配置
配置只要是root用户+密码,在任何主机上都能登录MySQL数据库。
[root@hadoop01 mysql-libs]# mysql -uroot -proot
mysql>use mysql;
mysql>select User, Host, Password from user;
修改user表,把Host表内容修改为%
mysql>update user set host=’%’ where host=‘localhost’;
删除root用户的其他host
mysql>delete from user where Host=‘hadoop01’;
delete from user where Host=‘127.0.0.1’;
delete from user where Host=’::1’;
刷新 mysql>flush privileges;
1.6 创建Cloudera Manager用的数据库
集群监控数据库
mysql> create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
hive数据库
mysql> create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
oozie数据库
mysql> create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
hue数据库
mysql> create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
1.7 下载第三方依赖
依次在三台节点(所有Agent的节点)上执行下载第三方依赖(注意:需要联网)
yum -y install chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb
1.8 关闭SELINUX
安全增强型Linux(Security-Enhanced Linux)简称SELinux,它是一个 Linux 内核模块,也是Linux的一个安全子系统。为了避免安装过程出现各种错误,建议关闭,有如下两种关闭方法:
1.8.1
临时关闭(不建议使用)
[root@hadoop01 ~]# setenforce 0
但是这种方式只对当次启动有效,重启机器后会失效。
1.8.2
永久关闭(建议使用)
修改配置文件/etc/selinux/config
[root@hadoop01 ~]# vim /etc/selinux/config
将SELINUX=enforcing 改为SELINUX=disabled
同步/etc/selinux/config配置文件
scp /etc/selinux/config hadoop02:/etc/selinux
scp /etc/selinux/config hadoop03:/etc/selinux
重启hadoop01、hadoop02、hadoop03主机
2.CM安装部署
CM下载地址:http://archive.cloudera.com/cm5/cm/5/
cloudera-manager-el6-cm5.13.2_x86_64.tar.gz
离线库下载地址:http://archive.cloudera.com/cdh5/parcels
CDH-5.13.2-1.cdh5.13.2.p0.3-el6.parcel
CDH-5.13.2-1.cdh5.13.2.p0.3-el6.parcel.sha1
manifest.json
2.1 解压CM包 (hadoop01)
tar -zxvf /home/cdh5.1.3.2-cms5.13.2/cloudera-manager-el6-cm5.13.2_x86_64.tar.gz -C /opt/
解压完后生成两个路径/opt/cloudera、/opt/cm-5.13.2
2.2 MySql的官网下载JDBC驱动
https://dev.mysql.com/downloads/connector/j/
解压tar -zxvf mysql-connector-java-8.0.11.tar.gz -C /home/downloads
cp /home/downloads/mysql-connector-java-8.0.11-bin.jar /opt/cm-5.13.2/share/cmf/lib/
2.3 主节点初始化CM5的数据库
/opt/cm-5.13.2/share/cmf/schema/scm_prepare_database.sh mysql cm -hadoop01 -uroot -proot --scm-host hadoop01 scm scm scm
2.4 Agent配置
2.4.1 修改config.ini配置
vim /opt/cm-5.13.2/etc/cloudera-scm-agent/config.ini
server_host为主节点的主机名
# Hostname of the CM server.
server_host=hadoop01
2.4.2 同步Agent到其他节点
scp -r /opt/cm-5.13.2/ hadoop02:/opt/
scp -r /opt/cm-5.13.2/ hadoop03:/opt/
2.5 在所有节点创建cloudera-scm用户:
useradd --system --home=/opt/cm-5.13.2/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment “Cloudera SCM User” cloudera-scm
2.6 主节点(hadoop01)准备Parcels,安装CDH5
2.6.1 拷贝相关文件到/opt/cloudera/parcel-repo/
cp /home/cdh5.1.3.2-cms5.13.2/CDH-5.13.2-1.cdh5.13.2.p0.3-el6.parcel /opt/cloudera/parcel-repo/
cp /home/cdh5.1.3.2-cms5.13.2/CDH-5.13.2-1.cdh5.13.2.p0.3-el6.parcel.sha1
/opt/cloudera/parcel-repo/
cp /home/cdh5.1.3.2-cms5.13.2/manifest.json /opt/cloudera/parcel-repo/
2.6.2 重命名文件
避免系统会重新下载CDH-5.3.6-1.cdh5.3.6.p0.11-el6.parcel.sha1文件。
mv CDH-5.3.6-1.cdh5.3.6.p0.11-el6.parcel.sha1 CDH-5.3.6-1.cdh5.3.6.p0.11-el6.parcel.sha
2.7 启动服务和客户端
2.7.1 hadoop01启动server 、agent:
[root@hadoop01 ~]# /opt/cm-5.13.2/etc/init.d/cloudera-scm-server start
[root@hadoop01 ~]# /opt/cm-5.13.2/etc/init.d/cloudera-scm-agent start
2.7.2 hadoop02、hadoop03启动agent:
[root@hadoop02 ~]# /opt/cm-5.13.2/etc/init.d/cloudera-scm-agent start
[root@hadoop03 ~]# /opt/cm-5.13.2/etc/init.d/cloudera-scm-agent start
2.7.3 访问7180端口
启动过程非常慢,Manager启动成功需要等待5分钟左右,过程中会在数据库中创建对应的表需要耗费一些时间。查看端口情况:netstat -anp | grep 7180
登录http://192.168.226.88:7180 (用户名、密码:admin)
3.CM的集群部署
3.1 登录
3.2 集群部署
4.安装hadoop、spark等相关服务
4.1 HDFS、YARN、Zookeeper安装
4.1.1选择自定义安装
4.1.2 选择安装服务
4.1.3 分配节点
4.1.4 选择默认配置
4.1.5 配置Hadoop支持LZO
点击主机,在下拉菜单中点击Parcel
选择配置
找到远程Parcel存储库URL,点击最后一栏的加号,增加一栏,输入http://archive.cloudera.com/gplextras/parcels/latest/,之后点击保存更改。
返回Parcel列表,可以看到多出了LZO,选择下载,下载完成后选择分配,分配完成后选择激活。(如果没有重启下CM的服务,如下图)
安装完LZO后,打开HDFS配置,找到“压缩编码解码器”一栏,点击加号,添加com.hadoop.compression.lzo.LzopCodec后保存更改。
打开YARN配置,找到MR 应用程序 Classpath,添加/opt/cloudera/parcels/HADOOP_LZO/lib/hadoop/lib/hadoop-lzo-cdh4-0.4.15-gplextras.jar
更新过期配置,重启服务
4.2 Kafka安装
4.2.1 下载Kafka-1.2.0.jar
网址:http://archive.cloudera.com/csds/kafka/
上传CSD包KAFKA-1.2.0.jar到/opt/cloudera/csd,并修改所有者和所有者的组
chown -R cloudera-scm:cloudera-scm /opt/cloudera/csd/
4.2.2 kafka的parcels包下载
网址:http://archive.cloudera.com/kafka/parcels/latest/
4.2.3 上传离线包
上传KAFKA-4.0.0-1.4.0.0.p0.1-el6.parcel、KAFKA-4.0.0-1.4.0.0.p0.1-el6.parcel.sha1到/opt/cloudera/parcel-repo目录,并修改KAFKA-4.0.0-1.4.0.0.p0.1-el6.parcel.sha1名称为KAFKA-4.0.0-1.4.0.0.p0.1-el6.parcel.sha
4.2.4 添加kafka服务
ClouderManager中选择Parcel->检查Parcel->Kafka点击分配->激活
回到首页,点击添加服务
4.3 spark2.1安装
在CDH5.13.2集群中,默认安装的Spark是1.6版本,这里需要将其升级为Spark2.1版本。经查阅官方文档,发现Spark1.6和2.x是可以并行安装的,也就是说可以不用删除默认的1.6版本,可以直接安装2.x版本,它们各自用的端口也是不一样的。
4.3.1 离线包下载
http://archive.cloudera.com/spark2/csd/
http://archive.cloudera.com/spark2/parcels/2.2.0.cloudera1/
4.3.2 离线包上传
上传文件SPARK2_ON_YARN-2.1.0.cloudera1.jar到/opt/cloudera/csd/下面
上传文件SPARK2-2.1.0.cloudera1-1.cdh5.7.0.p0.120904-el6.parcel和SPARK2-2.1.0.cloudera1-1.cdh5.7.0.p0.120904-el6.parcel.sha1 到/opt/cloudera/parcel-repo/
将SPARK2-2.1.0.cloudera1-1.cdh5.7.0.p0.120904-el6.parcel.sha1重命名为SPARK2-2.1.0.cloudera1-1.cdh5.7.0.p0.120904-el6.parcel.sha
4.3.3 界面操作
参考文献:
https://blog.csdn.net/jenrey/article/details/80802052
https://blog.csdn.net/bigdata_mining/article/details/80854372