CDH大数据平台部署

二、CDH简介

全称Cloudera’s Distribution Including Apache Hadoop。

hadoop的版本 (Apache、CDH、Hotonworks版本)

在公司中一般使用cdh多一些(收费的)、也有公司使用阿里云大数据平台、微软的大数据平台。

国内也有一些平台:星环大数据,一个朋友的公司(优刻得UCloud)

ClouderaManager : 简称 CM (CDH的管理界面) 。Cloudera Manager是用于管理CDH群集的端到端应用程序。

三、CM的安装

1、下载

1. 下载包:
	https://archive.cloudera.com/cdh6/6.2.1/parcels/    --cdh的地址
	https://archive.cloudera.com/cm6/6.2.1/redhat7/yum/RPMS/x86_64/   --CM的地址

2、安装依赖包 

	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

 3、 安装httpd(只需要在部署本地yum源的机器上安装即可,不用三台全部安装)

yum install httpd
yum install createrepo

4、一些其他的配置 

5. 关闭防火墙
查看防火墙状态: systemctl status firewalld
绿的running表示防火墙开启
执行关闭命令: systemctl stop firewalld
再次执行查看防火墙命令:systemctl status firewalld
执行开机禁用防火墙自启命令  : systemctl disable firewalld
完成

6. 关闭selinux(在配置文件中第一次设置时需要重启服务器)
setenforce 0

vim /etc/selinux/config
将SELINUX=enforcing
改为SELINUX=disabled

reboot 重启的意思    
init 0 关机   
init 6 重启

5、软件上传 

systemctl start httpd  可以通过网址访问一下:http://192.168.233.132,类似于ftp服务器

cd /var/www/html/
mkdir -p cm6/6.2.1/redhat7/yum/RPMS/x86_64/
cd cm6/6.2.1/redhat7/yum/RPMS/x86_64/
上传cm6中的文件到此目录
cd  /var/www/html/cm6/6.2.1/
上传allkeys.asc文件到/var/www/html/cm6/6.2.1/目录下

cd /var/www/html/
mkdir -p cdh6/6.2.1/parcels/
上传cdh6中的文件到此目录

访问测试:http://192.168.233.132/cm6/6.2.1/redhat7/yum/RPMS/x86_64/

6、生成repodata目录

cd /var/www/html/cm6/6.2.1/redhat7/yum
createrepo .

7、配置本地yum源

cd /etc/yum.repos.d/
vim cloudera-manager.repo
填写,请修改为自己的IP
[cloudera-manager]
name=Cloudera Manager
baseurl=http://192.168.233.132/cm6/6.2.1/redhat7/yum/
gpgcheck=0
enabled=1

执行命令:
yum clean all
yum list | grep cloudera    --这个步骤稍微慢一些,等待即可

效果如下:
[root@cdh yum.repos.d]# yum list | grep cloudera
cloudera-manager-agent.x86_64               6.2.1-1426065.el7          cloudera-manager
cloudera-manager-daemons.x86_64             6.2.1-1426065.el7          cloudera-manager
cloudera-manager-server.x86_64              6.2.1-1426065.el7          cloudera-manager
cloudera-manager-server-db-2.x86_64         6.2.1-1426065.el7          cloudera-manager
enterprise-debuginfo.x86_64                 6.2.1-1426065.el7          cloudera-manager
oracle-j2sdk1.8.x86_64                      1.8.0+update181-1          cloudera-manager

8、创建一个linux新用户

创建cloudera-scm用户(centos7要求必须有,centos6没有要求)
useradd cloudera-scm
passwd cloudera-scm

test123456
--免密钥登录
echo "cloudera-scm ALL=(root)NOPASSWD:ALL" >> /etc/sudoers
切换新用户试一下:
su - cloudera-scm
试玩之后,再回来
exit

9、安装mysql

第一步:下载repo,并安装mysql-server
先安装wget  yum install -y wget 
进入 /opt 目录
下载安装引导包:
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server


假如报如下错误:
失败的软件包是:mysql-community-common-5.7.43-1.el7.x86_64
 GPG  密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

报错使用这个语句:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
这个步骤需要网络,并根据网速会花些时间,安装完成后会覆盖之前的mariadb。
如果提示-bash: wget: 未找到命令,则:yum -y install wget
修复完错误之后继续安装mysql:
yum -y install mysql-community-server

假如还出问题,使用如下命令:
 sudo yum install mysql-server --nogpgcheck


第二步:mysql设置
启动:
systemctl start mysqld
查看运行情况:
systemctl status mysqld

第三步:登录mysql
查看mysql密码
grep "password" /var/log/mysqld.log
登录mysql
mysql -uroot -p  敲回车,粘贴密码

第四步:修改密码
取消mysql密码规范限制
set global validate_password_policy=0;
set global validate_password_length=1;
重设密码
alter user 'root'@'localhost' identified by '123456';
flush privileges;

第五步:卸载repo包
此时还有一个问题,因为安装了yum repository,以后每次yum都会自动更新,耗费时间,所以卸载掉:
yum -y remove mysql57-community-release-el7-10.noarch


第六步:安装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;
flush privileges;

10、安装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
--最核心的语句:安装cm-server服务
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

意事项:如果没有在httpd服务下面添加新的软件,以下步骤不需要管。

注意:如果在yum源中添加了新的包时:

1.需要删除之前的repodata文件后,重新生成;

2.重启httpd服务

3.清除yum缓存 yum clean all

11、设置CM这个软件的元数据为mysql

设置元数据库为mysql--前提是安装ClouderaManager Server服务
/opt/cloudera/cm/schema/scm_prepare_database.sh -h localhost mysql scm root 123456
旧版本:/usr/share/cmf/schema/scm_prepare_database.sh -h localhost mysql scm root 123456

假如报以下错误:拷贝驱动包
[                          main] DbCommandExecutor              INFO  Unable to find JDBC driver for database type: MySQL
[                          main] DbCommandExecutor              ERROR JDBC Driver com.mysql.jdbc.Driver not found.
[                          main] DbCommandExecutor              ERROR Exiting with exit code 3
--> Error 3, giving up (use --force if you wish to ignore the error)

提示ERROR JDBC Driver com.mysql.jdbc.Driver not found.
需要上传mysql驱动包jar到/opt/cloudera/cm/lib目录下。
cd /opt/cloudera/cm/lib
先拷贝5.7的驱动,试试,假如错误变为如下:
The last packet successfully received from the server was 473 milliseconds ago.  The last packet sent successfully to the server was 460 milliseconds ago.

请将mysql5.1的驱动包删除,然后换为8.0的驱动。
rm -rf mysql-connector-java-5.1.40.jar
此时有一个大坑,复制驱动包的时候,拷贝一个mysql8.0的才可以。
记得继续执行那句话:
/opt/cloudera/cm/schema/scm_prepare_database.sh -h localhost mysql scm root 123456
看到如下语句就说明:你的mysql中已经有cm这个系统的数据了。
All done, your SCM database is configured correctly!

查看:cat /etc/cloudera-scm-server/db.properties

12、启动cm服务

启动server服务进程(查看7180端口)
systemctl start cloudera-scm-server
查看启动日志:
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
查看启动状态:
systemctl status cloudera-scm-server
查看端口
netstat -an | grep 7180

当你的日志不再打印的时候,就启动成功了,启动时间大约2分钟。

或者当你能够查看到7180端口被占用的时候,也就说明成功了。

13、登录

访问地址:http://192.168.233.200:7180/cmf/login

账号和密码:admin admin 登录即可

至此,CM安装完毕,CDH还没有安装呢。

14、设置刷新频率

点击上面的图片的Logo,或者直接输入网址:http://192.168.233.200:7180/cmf/home,进入这个界面

四、安装CDH

1、配置本地parcel包

注意:必须要在数据库初始化后,将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

2、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

3、创建一些目录,添加分组

mkdir -p /var/lib/cloudera-host-monitor
mkdir -p /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/

4、创建集群

给集群起个名字:

jdk不需要安装,因为我们装过了。

在哪里呢?查询一下
find / -name java
发现jdk的安装路径为:/usr/java/jdk1.8.0_181-cloudera/

配置一下java home
vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera/
export PATH=$PATH:$JAVA_HOME/bin

保存之后刷新环境变量:
source /etc/profile

设置密码:

安装:

选择套餐:

后面的一直默认即可,直到开始安装hdfs。

点击完成,可以看到主界面了。

测试一下hdfs是否正常使用:

http://192.168.233.200:9870/

5、安装与使用hdfs

又想安装:

想安装什么服务,就选择什么服务,安装过程稍微慢一些。

假如想使用hdfs,访问 9870页面,想创建一个文件夹,发现没有权限:

如果按照以前的习惯,修改配置文件,配置相应的代码即可,使用CDH之后,所有的配置,都变成了在页面上修改。

以前修改的hdfs-site.xml ,变为在页面中修改。

修改的配置,需要重启才能生效。

重启完之后再次使用hdfs,测试是否还有权限问题。

如果你不习惯在页面修改配置文件,可以搜索,一般都在/opt/cloudera/parcels/CDH-6.2.1-1.cdh6.2.1.p0.1425774 下。

页面中可以查看hdfs集群的运行情况,也看到了集群的健康状况。

点击后面的 Suppress(抑制)。

假如你安装过程中出现了datanode启动不起来,检查 网络IP是否正确。将dhcp 修改为 static

重启网卡:systemctl restart network

接着:停止hdfs服务,删除 /dfs 目录下的三个文件。

卸载hdfs服务,重新添加hdfs 服务,这个时候会重新进行namenode 格式化。

6、安装yarn

添加服务--> 选择 yarn-- > 自动安装即可

如何使用yarn,跑一个任务
在home 下  创建一个wc.txt
里面随便输入一些需要统计的词
bigdata hadoop
bigdata hello hadoop

将这个任务,上传至hdfs
首先创建一个文件夹  hdfs dfs -mkdir -p /home/input
上传文件至: hdfs dfs -put /home/wc.txt /home/input

使用hadoop自带的jar包,运行任务
yarn jar /opt/cloudera/parcels/CDH/jars/hadoop-mapreduce-examples-3.0.0-cdh6.2.1.jar wordcount /home/input/* /home/output

在界面中,还可以访问到:http://192.168.233.200:8088/cluster

7、安装zookeeper

通过命令进入zk查看是否可用。

find / -name zkCli.sh
/opt/cloudera/parcels/CDH-6.2.1-1.cdh6.2.1.p0.1425774/lib/zookeeper/bin/zkCli.sh -server cdh:2181

8、hive

要想创建hive,hive需要mysql充当元数据的表服务。

mysql -uroot -p
create database hive;

安装hive服务,需要用到mysql

通过以上可以看出缺少jar包

cp /opt/cloudera/cm/lib/mysql-connector-java-8.0.26.jar /opt/cloudera/parcels/CDH/lib/hive/lib/

拷贝完成之后,记得点击 resume 一下。

测试hive的用法:

直接在黑窗口中hive 一下。
进入,编写一些简单的sql语句,比如 show databases;
select from_unixtime(1583781807, 'yyyy-MM-dd');

注意:此时的metastore 以及hiveserver2 都已经启动了,但是使用datagrip 连接的时候缺少一个包。

上一篇:开源 - Ideal库 - 常用枚举扩展方法(一)


下一篇:【Python Tips】Python内置函数isinstance——检测数据类型:处理多种类型的输入参数(对比type)