#博学谷IT学习技术支持#
1. 测试集群规划
1.1软件选型
项目软件选型:
jdk:Jdk1.8
Scala2.11.8
CDH 6.2.1: zookeeper-3.4.5-cdh6.2.1、hadoop-3.0.0-cdh6.2.1,hive-2.1.1-cdh6.2.1、 hue-4.3.0-cdh6.2.1 sqoop-1.4.7-cdh6.2.1 Mysql 5.7
1.2主机规划
主机规划即哪台机器上部署哪些软件。
| hadoop01/192.168.88.80 | hadoop02/192.168.88.81 | hadoop03/192.168.88.82 | |
|---|---|---|---|
| CM管理服务 | ✔ | ✘ | ✘ |
| NameNode | ✔ | ✘ | ✘ |
| DataNode | ✔ | ✔ | ✔ |
| SecondNameNode | ✘ | ✔ | ✘ |
| ResourceManager | ✔ | ✘ | ✘ |
| NodeManager | ✔ | ✔ | ✔ |
| JobHistory Server | ✔ | ✘ | ✘ |
| Zookeeper | ✔ | ✔ | ✔ |
| Hive | ✘ | ✘ | ✔ |
| Oozie | ✘ | ✔ | ✘ |
| Hue | ✘ | ✘ | ✔ |
| Sqoop | ✔ | ✔ | ✔ |
| Coordinator | ✔ | ✘ | ✘ |
| Worker | ✔ | ✔ | ✔ |
总结:
- 单节点集群是把所有软件都部署在同一台机器上
- 分布式集群是按照主机规划把对应的软件部署在对应的机器上
1.3测试集群
| 节点 | 内存 | CPU | 硬盘 |
|---|---|---|---|
| hadoop01 | 8G | 4 | 50 |
| hadoop02 | 8G | 2 | 50 |
| hadoop03 | 8G | 2 | 50 |
目标:部署三个节点的 Hadoop 集群任务:
- 安装三台虚拟机——Hadoop 物理集群部署
- 在虚拟机上安装 Hadoop——Hadoop 软件集群部署
2. CM前置工具
2.1下载包
2.1.1 CDH包
下载地址:archive.cloudera.com/cdh6/6.2.1/…
只需要下载对应系统下的包即可,我们使用的是Centos7,所以只需要下载后缀为el7的三个包
即可。在资料中已下载好:Home\资料\下载文件\cdh6。
2.1.2 CM包
下载地址:archive.cloudera.com/cm6/6.2.1/r…
路径下的六个包都需要下载。在资料中已下载好:Home\资料\下载文件\cm6。
2.1.3 秘钥文件
下载地址:archive.cloudera.com/cm6/6.2.1/
在资料中已下载好:Home\资料\下载文件\allkeys.asc。
2.2安装依赖包
如果不提前安装这些依赖包,在后面安装CM的时候可能会出现异常。
yum install -y cyrus-sasl-plain cyrus-sasl-gssapi portmap fuse-libs bind-utils libxslt fuse yum install -y /lib/lsb/init-functions createrepo deltarpm python-deltarpm yum install -y mod_ssl openssl-devel python-psycopg2 MySQL-python
可以三台虚拟机同时进行安装。
2.3安装httpd服务
因为在实际的生产环境中,很有可能是不能联网的,或者从外网下载的速度较慢。这时我们通
过本地的镜像来进行安装,效率会大大提升。只在第一台服务器执行即可。
#前面已执行过
yum install httpd -y yum install createrepo
#启动httpd服务
systemctl start httpd.service
#进入域名根目录
cd /var/www/html/
#需要创建和官网路径一致的目录,yum安装时才能够正确的找到
mkdir -p cm6/6.2.1/redhat7/yum/RPMS/x86_64/
上传cm6中的文件到目录:/var/www/html/cm6/6.2.1/redhat7/yum/RPMS/x86_64/:
上传allkeys.asc文件到目录:/var/www/html/cm6/6.2.1/:
访问测试:http://hadoop01/cm6/6.2.1/redhat7/yum/RPMS/x86_64/
2.4生成repodata目录
只在第一台服务器执行即可。
可以看到在官网的地址中,有一个repodata目录,而我们新搭建的http服务中是没有的。此文件夹是不能直接复制的,需要使用脚本生成出来,是对现有文件结构的描述。如果http中的文件内容有变更,需要删除后重新生成repodata目录,以在web中生效。
cd /var/www/html/cm6/6.2.1/redhat7/yum createrepo .
访问web链接,确认repodata目录已存在:
2.5配置本地yum源
只在第一台服务器执行即可。
cd /etc/yum.repos.d/ vim cloudera-manager.repo
yum clean all yum list | grep cloudera
2.6创建cloudera-scm用户
centos7要求必须有,centos6没有要求,每一台服务器都需要执行。
useradd cloudera-scm passwd cloudera-scm pwd: test123456
#免密钥登录
echo "cloudera-scm ALL=(root)NOPASSWD:ALL" >> /etc/sudoers
#测试用户
su - cloudera-scm exit
3. 安装ClouderaManager
3.1ClouderaManager介绍
Cloudera Manager是用于管理CDH群集的B/S应用程序。Cloudera Manager通过对CDH集群的每个部分提供细粒度的可视性和控制来设置企业部署的标准,使运营商能够提高性能,提高服务质量,提高合规性并降低管理成本。
使用Cloudera Manager,可以轻松部署和集中操作完整的CDH堆栈和其他托管服务
(Hadoop、Hive、Spark、Kudu)。其特点:应用程序的安装过程自动化,将部署时间从几周缩短到几分钟; 并提供运行主机和服务的集群范围的实时监控视图; 提供单个中央控制台,以在整个群集中实施配置更改; 并集成了全套的报告和诊断工具,可帮助优化性能和利用率。
3.2ClouderaManager架构
3.3安装Server服务
此步骤仅在第一台服务器安装。
yum install -y oracle-j2sdk1.8-1.8.0+update181-1.x86_64 yum install -y enterprise-debuginfo-6.2.1-1426065.el7.x86_64 yum install -y cloudera-manager-server-6.2.1-1426065.el7.x86_64 yum install -y cloudera-manager-server-db-2-6.2.1-1426065.el7.x86_64
注意:如果在yum源中添加了新的包时:
1.需要删除之前的repodata文件后,重新生成;
2.重启httpd服务
3.清除yum缓存 yum clean all
3.4设置元数据库为mysql
- 设置元数据库为mysql--前提是安装ClouderaManager Server服务
-
-
/opt/cloudera/cm/schema/scm_prepare_database.sh -h localhost mysql scm root 123456
-
旧版本CM:
/usr/share/cmf/schema/scm_prepare_database.sh -h localhost mysql scm root 123456
如果提示ERROR JDBC Driver com.mysql.jdbc.Driver not found,需要上传mysql驱动包jar到 /opt/cloudera/cm/lib目录下。
Mysql驱动在资料中已提供:
查看:cat /etc/cloudera-scm-server/db.properties
3.5启动server服务进程(查看7180端口)
- 启动:
-
-
systemctl start cloudera-scm-server
-
- 查看server启动日志:
-
-
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
-
日志配置信息:/etc/cloudera-scm-server/log4j.properties
Agent日志目录:/var/log/cloudera-scm-agent/cloudera-scm-agent.log
查看启动状态:
查看启动状态
systemctl status cloudera-scm-server
查看端口号是否已经运行
netstat - an | grep 7180
3.6配置本地parcel包
注意:必须要在数据库初始化后,将parcel文件放置到/opt/cloudera/parcel-repo目录中。
- 上传cdh6的parcel等文件到opt/cloudera/parcel-repo
- 重命名密钥文件名
mv CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha1 CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha
资料文件目录:
3.7开始安装
访问Server:http://hadoop01:7180/cmf/login
账号密码均为admin
登录后,先不要安装,先返回首页:
先设置Parcel 更新频率:
修改为1分钟:
如果目录下已经有了后缀为torrent的文件,则证明识别成功:
然后重新进入添加集群页面:
下一步:
选择免费版本的ClouderaManager:
设置集群名称:
选择安装的服务器:
选择存储库:
运行安装:
测试网络和主机:
查看检查结果:
如果有问题,就需要修复后再继续
图中显示的问题,就是下一步要处理的,swappiness和透明化。
3.8swappiness和透明化
临时生效:
sysctl -w vm.swappiness=10 echo never > /sys/kernel/mm/transparent_hugepage/defrag echo never > /sys/kernel/mm/transparent_hugepage/enabled
永久生效:
echo "vm.swappiness=10" >> /etc/sysctl.conf echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.local echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local
3.9继续创建集群
然后回到刚才的安装页面,选择继续创建集群:
安装成功,返回首页查看主机:
3.10 添加第二台主机
添加第二台服务器节点:
运行检查后,对hadoop02节点也要执行swappiness和透明化操作。然后继续下一步:
添加新节点完成:
4. 添加监控Service
4.1.1 功能
Cloudera Management Service可作为一组角色实施各种监控管理
1.Activity Monitor:收集关于MapReduce服务运行的活动的信息。默认情况下不添加此角色,实际生产环境也是不需要的。
2.Host Monitor:收集有关主机的运行状况和指标信息。
3.Service Monitor:从YARN和Impala服务中收集关于服务和活动信息的健康和度量信息。
4.Event Server:聚合组件的事件并将其用于警报和搜索。
5.Alert Publisher :为特定类型的事件生成和提供警报,实际情况下用的也少。
4.1.2 安装
- 开始添加
- 自定义角色分配服务器
- 分配权限后继续
mkdir -p /var/lib/cloudera-host-monitor mkdir /var/lib/cloudera-service-monitor chown -R cloudera-scm:cloudera-scm /var/lib/cloudera-host-monitor chown -R cloudera-scm:cloudera-scm /var/lib/cloudera-service-monitor/
- 开始安装
- 可以看到报警信息
- 经过一段时间后,可以看到这段时间内的服务器监控信息
5. 添加大数据组件
-
5.1添加HDFS服务
-
- 点击添加
安装以后,会有一些异常信息,这是还没有完全启动,需要等待一段时间。
| Causedby: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException):Permission denied: user=admin, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x atorg.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java :400) |
|---|
设置后需要重启服务
#查看当前的safemode状态
hdfs dfsadmin -safemode get
#关闭safemode
hdfs dfsadmin -safemode leave
hdfs dfs -mkdir /test
5.2添加Yarn服务
- 添加服务
- 角色分配服务器
- 使用默认配置
- 运行安装命令
- 对于无用的警告可以压制掉
5.3添加Zookeeper服务
- 添加
- 自定义角色服务器
- 如果有异常报警,请等待一段时间完全启动后再刷新看看
-
5.4添加Hive服务
-
- 添加服务
- 提示ERROR JDBC Driver com.mysql.jdbc.Driver not found. 需要上传mysql驱动包jar到/opt/cloudera/cm/lib目录下。
-
- 继续测试
提示:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver。
需要先创建数据库:
mysql -uroot -p create database hive;
点击stderr查看报错详情
提示:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 之前是CM找不到驱动,现在是Hive找不到mysql驱动:
cp /opt/cloudera/cm/lib/mysql-connector-java-5.1.40.jar /opt/cloudera/parcels/CDH/lib/hive/lib/
hive select from_unixtime(1583781807, 'yyyy-MM-dd');
-
5.5添加Oozie服务
-
- 添加服务
mysql -uroot -p create database oozie;
然后配置并测试连接:
提示:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
需要复制驱动jar:
cp /opt/cloudera/cm/lib/mysql-connector-java-5.1.40.jar /opt/cloudera/parcels/CDH/lib/oozie/lib/ cp /opt/cloudera/cm/lib/mysql-connector-java-5.1.40.jar /var/lib/oozie/
5.6添加Sqoop服务
- 添加服务
虽然现在已经有sqoop2.x版本,但还是推荐大家使用1.x。
- 角色分配服务器
- 安装完成
-
测试sqoop
- 创建mysql测试库和表
| mysql -uroot -p create schema test; create table test(id bigint auto_increment, name varchar(127) not null, age bigint null, class varchar(255) null, primary key (id)); |
|---|
- 创建文本文件并上传到HDFS
| #创建文件vim text.txt | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| leo | 12 | class1 leo1 | 13 | class2 leo2 | 14 | class3 leo3 | 15 | class4 leo4 | 16 | class5 leo5 | 17 | class6 |
4.4 查看mysql表是否有数据
5.7添加Hue服务
- 添加服务
- 选择依赖
- 分配服务器
- 创建元数据库
mysql -uroot -p create database hue default character set utf8 collate utf8_general_ci;
- 数据库设置并测试连接
- 成功
- 访问WEB UI
- 成功
6. 添加新服务器
- 启动新的服务器
- 配置host 和 ip
vim /etc/hosts 192.168.88.80 hadoop01 192.168.88.81 hadoop02
192.168.88.82 hadoop03
- 安装依赖包
yum install -y cyrus-sasl-plain cyrus-sasl-gssapi portmap fuse-libs bind-utils libxslt fuse yum install -y /lib/lsb/init-functions createrepo deltarpm python-deltarpm yum install -y mod_ssl openssl-devel python-psycopg2 MySQL-python
- 关闭防火墙
查看防火墙状态: systemctl status firewalld.service
绿的running表示防火墙开启
执行关闭命令: systemctl stop firewalld.service 再次执行查看防火墙命令:systemctl status firewalld.service 执行开机禁用防火墙自启命令 : systemctl disable firewalld.service
- 关闭selinux
临时生效
setenforce 0
#永久生效
#将SELINUX=enforcing改为SELINUX=disabled
vim /etc/selinux/config
#在配置文件中第一次设置时需要重启服务器
reboot
- 确保第一台主机的httpd服务正常使用
#查看当前状态
systemctl status httpd.service
#启动
systemctl start httpd.service
确保访问正常
- 配置本地yum源
cd /etc/yum.repos.d/ vim cloudera-manager.repo
yum clean all yum list | grep cloudera
- 创建cloudera-scm用户
useradd cloudera-scm passwd cloudera-scm test123456
#免密钥登录
echo "cloudera-scm ALL=(root)NOPASSWD:ALL" >> /etc/sudoers su - cloudera-scm
exit
-
使用CM添加新主机
- 添加新主机
- 检查主机正确性
-
修复监测问题临时生效:
-
sysctl -w vm.swappiness=10 echo never > /sys/kernel/mm/transparent_hugepage/defrag echo never > /sys/kernel/mm/transparent_hugepage/enabled
-
- 永久生效:
-
-
echo "vm.swappiness=10" >> /etc/sysctl.conf echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.local echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local
-
然后回到刚才的安装页面,选择继续创建集群:
安装成功,返回首页查看主机:
- 针对已安装的不同服务,添加新服务器的角色实例