CDH安装与配置及相关大数据组件实践
一、CDH 介绍
CDH(Cloudera’s Distribution Including Apache Hadoop)是一个基于 Web 用户界面的大数据平台版本。它支持大多数 Hadoop 组件,包括 HDFS、MapReduce、Hive、Pig、HBase、Zookeeper、Sqoop 等。其优点是大大简化了大数据平台的安装过程,使用起来也较为简单。
二、Cloudera Manager 的功能
- 管理
可以对集群进行管理操作,例如添加、删除节点等。 - 监控
全面监控集群的健康情况,包括各种设置的指标和系统运行状况。 - 诊断
当集群出现问题时,能够对问题进行诊断,并给出相应的建议解决方案。 - 集成
将多个组件进行整合。
三、国内大数据开发环境平台方案对比
- 手动安装各个软件(如学习时的方式,hadoop 开源免费)
- 问题:安装过程繁琐,存在版本差异问题,并且缺少集群软、硬件监控功能。
- 使用 CDH、HDP、星环等大数据平台
- 优势:能够快速搭建软件环境。
- 劣势:收费。
- 使用阿里云(dataworks / e - mapreduce)、华为云、腾讯云、亚马逊云等云平台
四、CDH 安装步骤
(一)安装依赖包
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
(二)安装 httpd(仅在部署本地 yum 源的机器上安装)
yum install httpd
yum install createrepo
(三)修改主机名,配置 hosts
- 修改主机名
hostnamectl set - hostname hadoop01
- 配置 hosts 文件
vi /etc/hosts
172.16.35.101 hadoop01
(四)关闭防火墙和配置免密登录
- 关闭防火墙
- 查看防火墙状态
systemctl status firewalld.service
- 执行关闭命令
systemctl stop firewalld.service
- 再次查看防火墙状态
systemctl status firewalld.service
- 执行开机禁用防火墙自启命令
systemctl disable firewalld.service
- 配置免密登录
ssh - keygen
ssh - copy - id hadoop01
(五)关闭 selinux(在配置文件中第一次设置时需重启服务器)
setenforce 0
vim /etc/selinux/config
将 SELINUX=enforcing 改为 SELINUX=disabled
(六)安装 httpd 服务、启动 httpd 服务
systemctl start httpd.service
cd /var/www/html/
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/目录下cd /var/www/html/
mkdir - p cdh6/6.2.1/parcels/
#上传 cdh6 中的文件到此目录 /var/www/html/cdh6/6.2.1/parcels/#在 windows 系统访问测试:http://hadoop01/cm6/6.2.1/redhat7/yum/RPMS/x86_64/#配置 windows 系统的本地 hosts
C:\Windows\System32\drivers\etc#CDH 伪分布式
172.16.35.101 hadoop01
(七)生成 repodata 目录
cd /var/www/html/cm6/6.2.1/redhat7/yum
createrepo.
(八)配置本地 yum 源
cd /etc/yum.repos.d/
vi cloudera - manager.repo
[cloudera - manager]
name=Cloudera Manager
baseurl=http://hadoop01/cm6/6.2.1/redhat7/yum/
gpgcheck=0
enabled=1yum clean all
yum list | grep cloudera
(九)创建 cloudera - scm 用户
#创建一个用户名,用户名是 cloudera - scm
useradd cloudera - scm
#给 cloudera - scm 用户添加一个密码
passwd cloudera - scm
#输入的密码
test123456#免密钥登录
echo "cloudera - scm ALL=(root)NOPASSWD:ALL" >> /etc/sudoers
su - cloudera - scm
exit
(十)安装 mysql 服务(略)
(十一)创建数据库,作为 CDH 的元数据库
登录 mysql 数据库,执行以下命令
create database scm DEFAULT CHARACTER SET utf8;
grant all PRIVILEGES on *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
grant all PRIVILEGES on *.* TO 'root'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;
grant all PRIVILEGES on *.* TO 'root'@'hadoop01' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;
(十二)安装 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 源中添加了新的包:
- 需要删除之前的 repodata 文件后,重新生成。
- 重启 httpd 服务。
- 清除 yum 缓存
yum clean all
。
如果是集群,3 个节点都要执行:yum install -y oracle - j2sdk1.8 - 1.8.0+update181 - 1.x86_64
配置 JDK 的环境变量:
# yum install -y oracle - j2sdk1.8 - 1.8.0+update181 - 1.x86_64
# 上述命令可以安装 JDK
修改/etc/profile 增加下面的内容
JAVA_HOME=/usr/java/jdk1.8.0_181 - cloudera/
PATH=$PATH:$JAVA_HOME/bin
(十三)设置元数据库为 mysql
需要上传 mysql 驱动包(mysql - connector - java - 8.0.26.jar)jar 到/opt/cloudera/cm/lib 目录下。
设置元数据库为 mysql(前提是安装 ClouderaManager Server 服务)
/opt/cloudera/cm/schema/scm_prepare_database.sh - h localhost mysql scm root 123456
查看:cat /etc/cloudera - scm - server/db.properties
(十四)启动 server 服务进程(查看 7180 端口)
systemctl start cloudera - scm - server
查看启动日志:
tail - f /var/log/cloudera - scm - server/cloudera - scm - server.log
查看启动状态:
systemctl status cloudera - scm - server
查看端口
yum install net - tools
netstat - an | grep 7180
(十五)配置本地 parcel 包
注意:必须要在数据库初始化后,将 parcel 文件放置到/opt/cloudera/parcel - repo 目录中。
上传 cdh6 的 parcel 等文件到/opt/cloudera/parcel - repo
mv /var/www/html/cdh6/6.2.1/parcels/* /opt/cloudera/parcel - repo
重命名密钥文件名
cd /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
(十六)开始安装
访问 Server:http://hadoop01:7180/cmf/login
,账号密码均为 admin
。
(十七)swappiness 和透明化
- 临时生效
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
五、CM 的图形化安装
(一)登录后首先要做的工作
设置 Parcel 更新频率为 1 分钟。登录后,在新的页面中点击小包裹,再点击配置,将更新频率设置为一分钟。
(二)进行新建集群的操作
在跳转的欢迎界面,点击继续,接收协议,选择免费社区版。指定软件包的位置:http://hadoop01/cm6/6.2.1
和 http://hadoop01/cdh6/6.2.1/parcels/
。如果中途出现问题(如安装一半内存不足报错)再次安装时,需要删除安装锁:
rm - rf /tmp/scm_prepare_node.*
rm - rf /tmp/.scm_prepare_node.lock
等待安装后,选择要安装的套餐。
(三)新服务的安装
- zookeeper 的安装
在服务的选择页面中选择 zookeeper,然后在安装页面中直接点击【继续】按钮。安装好之后,如果要在服务器中测试 zookeeper 的运行情况,可以通过以下方式访问 zk 的客户端:
[root@hadoop01 ~]# find / - name zkCli.sh
find: ‘/proc/87190’: 没有那个文件或目录
/opt/cloudera/parcels/CDH - 6.2.1 - 1.cdh6.2.1.p0.1425774/lib/zookeeper/bin/zkCli.sh
[root@hadoop01 ~]# /opt/cloudera/parcels/CDH - 6.2.1 - 1.cdh6.2.1.p0.1425774/lib/zookeeper/bin/zkCli.sh
- HDFS
- 将 HDFS 配置项 dfs.permissions 改为 false,否则会因权限问题不能在 hdfs 中创建目录和文件。将 dfs.replication 设置为 1(因为安装的伪分布式,所以副本个数设置为 1)。
- 关闭 safemode 模型:
[root@hadoop01 ~]# hdfs dfsadmin - safemode get
Safe mode is OFF
[root@hadoop01 ~]# hdfs dfsadmin - safemode leave
Safe mode is OFF
- 测试 HDFS:
hdfs dfs - mkdir /test
- yarn 的安装
与 zk 一样,选择 yarn 安装,然后点击【继续】。yarn 安装之后需要设置参数:
yarn.nodemanager.resource.memory - mb = 4G
yarn.scheduler.maximum - allocation - mb = 2G
测验 yarn 的安装情况:
- 通过官方例子来处理,先查找 hdfs - site.xml 文件位置:
find / - name hdfs - site.xml
#大致的位置:
/opt/cloudera/parcels/CDH - 6.2.1 - 1.cdh6.2.1.p0.1425774/etc/hadoop/conf.pseudo/hdfs - site.xml
/opt/cloudera/parcels/CDH - 6.2.1 - 1.cdh6.2.1.p0.1425774/etc/hadoop/conf.impala/hdfs - site.xml
/opt/cloudera/parcels/CDH - 6.2.1 - 1.cdh6.2.1.p0.1425774/etc/hadoop/conf.empty/hdfs - site.xml
- 取上述目录中的主目录:
cd /opt/cloudera/parcels/CDH - 6.2.1 - 1.cdh6.2.1.p0.1425774/
- 官方例子在以下目录:
/opt/cloudera/parcels/CDH - 6.2.1 - 1.cdh6.2.1.p0.1425774/jars hadoop - mapreduce - examples - 3.0.0 - cdh6.2.1.jar
- 测试步骤:
创建测试文件:
vim testinput.txt
I love BeiJing
I love China
Beijing is the capital of China
创建 HDFS 目录并上传文件:
hadoop fs - ls /
hadoop fs - mkdir /input
hadoop fs - put testinput.txt /input
运行 wordcount:
yarn jar /opt/cloudera/parcels/CDH/jars/hadoop - mapreduce - examples - 3.0.0 - cdh6.2.1.jar wordcount /input /output
hadoop fs - ls /output //完成后查看输出目录
hadoop fs - cat /output/part - r - 00000 //查看输出结果
- hive 的安装
- 创建数据库
mysql - uroot - p
create database hive;
- 需要上传 mysql 驱动包 jar 到/opt/cloudera/cm/lib 目录下(之前已传过则不用传),并复制到 hive 相关目录:
cp /opt/cloudera/cm/lib/mysql - connector - java - 8.0.26.jar /opt/cloudera/parcels/CDH/lib/hive/lib/
如果忘记导入,导入驱动包之后,点击 Resume 重新安装。如果出现错误:Cannot find hadoop installation: $HADOOP_HOME or $HADOOP_PREFIX must be set
,则需要变更 hive 的配置:
cd /etc/hive/conf
vim hadoop - env.sh
# 添加以下内容:
export HADOOP_HOME=/opt/cloudera/parcels/CDH - 6.2.1 - 1.cdh6.2.1.p0.1425774
source hadoop - env.sh
可以使用 Datagrip 或者 Dbeaver 连接 hive。
5. sqoop
- 创建数据库和表
mysql - uroot - p
create database test1;
create table t_user
(id bigint auto_increment,name varchar(127) not null,age bigint null,class varchar(255) null,primary key (id)
);
创建测试文件:
vim text.txt
leo|12|class1
leo1|13|class2
leo2|14|class3
leo3|15|class4
leo4|16|class5
leo5|17|class6
复制 mysql 驱动包到 sqoop 相关目录:
cp /opt/cloudera/cm/lib/mysql - connector - java - 5.1.40.jar /opt/cloudera/parcels/CDH/lib/sqoop/lib/
执行数据导出操作:
sqoop export \
--connect jdbc:mysql://hadoop01:3306/test1 \
--username root \
--password 123456 \
--table t_user \
--columns 'name,age,class' \
--export - dir /data \
--input - fields - terminated - by '|' \
--num - mappers 1