二、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 连接的时候缺少一个包。