—、系统环境初始化
1、机器资源介绍
准备3台机器
lyc-80-101
lyc-80-102
lyc-80-103
[root@lyc-80-101 ~]# hostnamectl
Static hostname: lyc-80-101
Virtualization: vmware
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-862.el7.x86_64
Architecture: x86-64
2、设置IP为static模式
[root@lyc-80-101 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.80.101"
PREFIX="24"
GATEWAY="192.168.80.2"
DNS1="192.168.80.2"
3、设置hosts映射文件
vi /etc/hosts
192.168.80.101 lyc-80-101
192.168.80.102 lyc-80-102
192.168.80.103 lyc-80-103
电脑端修改hosts文件,位置为C:\Windows\System32\drivers\etc
4、关闭 firewalld,iptables 与 selinux
所有节点都要配置:
yum install -y firewall* iptable*
(1) 关闭firewalld
systemctl stop firewalld.service
systemctl disable firewalld.service
firewall-cmd --state
(2) 关闭iptables
iptables -F
systemctl stop iptables.service
service iptables save
systemctl disable iptables.service
(3) 禁用 selinux
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
setenforce 0
getenforce 0
sestatus
(4)防火墙规则变更
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
iptables -L -n
重启机器
reboot
5、设置免密登录
ssh-keygen -t rsa 敲3下回车,生成秘钥
ssh-copy-id lyc-80-101
ssh-copy-id lyc-80-102
ssh-copy-id lyc-80-103
-----------以上命令,每台机器都需要执行,也可以使用脚本批量进行免密
----------------------------------------------------------------
也可以使用脚本进行免密
pwd
/root
chmod +x fgssh
执行免密脚本
./fgssh -user root -hosts "lyc-80-101 lyc-80-102 lyc-80-103" -advanced -exverify -confirm
输入一次yes
看到enter 就是回车
看到password就是输密码
6、更换源文件
更换centos7的源为华为源,当然也可以选择阿里源
cd /etc/yum.repos.d
mkdir yumbak
把里面的repo进行备份
mv CentOS-* yumbak/
移动源文件到/etc/yum.repos.d下
mv /root/CentOS7-Base.repo . //需要提前准备备好源文件
----------
文件内容
cat /etc/yum.repos.d/CentOS7-Base.repo
------
[base]
name=CentOS-$releasever - Base - repo.huaweicloud.com
baseurl=https://repo.huaweicloud.com/centos/$releasever/os/$basearch/
#mirrorlist=https://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=https://repo.huaweicloud.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates - repo.huaweicloud.com
baseurl=https://repo.huaweicloud.com/centos/$releasever/updates/$basearch/
#mirrorlist=https://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=https://repo.huaweicloud.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - repo.huaweicloud.com
baseurl=https://repo.huaweicloud.com/centos/$releasever/extras/$basearch/
#mirrorlist=https://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
gpgcheck=1
gpgkey=https://repo.huaweicloud.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - repo.huaweicloud.com
baseurl=https://repo.huaweicloud.com/centos/$releasever/centosplus/$basearch/
#mirrorlist=https://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
gpgcheck=1
enabled=0
gpgkey=https://repo.huaweicloud.com/centos/RPM-GPG-KEY-CentOS-7
---------
更新软件源目录
yum clean all
yum makecache fast
//////////配置好1台后,记得scp分发到其他机器,然后更新软件源目录
------------安装系统依赖包------------------------------------
yum install -y conntrack ipvsadm ipset jq iptables curl sysstat
yum install -y libseccomp wget vim net-tools git socat ipvsadm ebtables psmisc
yum install -y nfs-utils telnet device-mapper-persistent-data lvm2 network-scripts tar
yum install -y lrzsz subversion gpm unzip zip gcc yum-tuils device-mapper-persistent-data
7、更改系统句柄
每台机器都执行一遍
vim /etc/security/limits.conf
-------------------------------
* soft nofile 655360
* hard nofile 131072
* soft nproc 655350
* hard nproc 655350
* seft memlock unlimited
* hard memlock unlimitedd
------------------------------
vim /etc/security/limits.d/20-nproc.conf
* soft nproc 4096----改为65535
root soft nproc unlimited
查看修改结果
ulimit -a
8、3台机器时间同步
yum -y install chrony
vim /etc/chrony.conf
-------------------
添加同步服务器
server ntp1.aliyun.com iburst
-----------------------
service chronyd restart
chronyc sources -v
输入date 查看时间
timedatectl
主要查看以下2个参数为yes,并核对3台机器的时间
NTP enabled: yes
NTP synchronized: yes
////直时间同步非常重要,不然后期安装服务后会报错
二、配置系统环境依赖
1、准备安装资源
创建cdh6.3.2文件夹存放文件包
mkdir cdh6.3.2
cd cdh6.3.2
上传文件包到机器上
------------------------------------------
cdh6.3.2 离线包:
CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
CDH-6.3.2-1.cdh6.3.2.p0.1605554-el6.parcel.sha256
manifest.json
cdh6.3.1 的CM 包:
cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-server-db-2-6.3.1-1466458.el7.x86_64.rpm
enterprise-debuginfo-6.3.1-1466458.el7.x86_64.rpm
oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
jdbc 驱动:
mysql-connector-java-5.1.49.tar.gz
2、安装jdk
3台机器节点都要配置:jdk
rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
vim /etc/profile
-------------
###安装jdk####
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
----------
source /etc/profile
java -version
3、安装mariadb-server
yum install -y mariadb-server
启动应用服务
service mariadb start
chkconfig mariadb on
设置初始化,密码自己设置
mysql_secure_installation
登录
mysql -uroot -proot
4、配置 httpd 分发服务器
安装
yum install -y httpd
vim /etc/httpd/conf/httpd.conf
-------------------
修改/etc/httpd/conf/httpd.conf配置文件,在<IfModule mime_module>中修改以下内容
第284行
AddType application/x-gzip .gz .tgz .parcel
-------------------
service httpd start
chkconfig httpd on
mv cdh6.3.2/ /var/www/html/
cd /var/www/html/
5、制作自定义源
cd cdh6.3.2/
yum install -y createrepo
制作自定义源
createrepo .
vim /etc/yum.repos.d/cloduera-manger.repo
---------
[cmrepo]
name = cm_repo
baseurl =http://192.168.80.101/cdh6.3.2
enable = 1
gpgcheck = 0
----------
重新加载
yum clean all
rm -rf /var/run/yum.pid
yum makecache fast
对102、103主机执行命令同步:
cd /etc/yum.repos.d
scp cloduera-manger.repo lyc-80-102:/etc/yum.repos.d/
yum clean all
yum makecache fast
6、配置mysql-jdbc
mkdir -p /usr/share/java
pwd
/var/www/html/cdh6.3.2 ///软件包存放位置 要记住
cd /var/www/html/cdh6.3.2
tar -zxvf mysql-connector-java-5.1.49.tar.gz
cd mysql-connector-java-5.1.49
移动jar包到/usr/share/java/
cp -ap mysql-connector-java-5.1.49-bin.jar /usr/share/java/
cd /usr/share/java/
改名,给权限
mv
chmod 777 -R mysql-connector-java.jar
三、安装CDH6.3.2所需环境
1、安装所需依赖包
3个节点都安装:
yum -y install chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain
yum -y install fuse fuse-libs redhat-lsb postgresql* portmap mod_ssl openssl-devel
yum -y install cyrus-sasl-gssapi python-psycopg2 MySQL-python
2、安装cloudera-server
再次合适自己的java环境
java -
安装cloudera-manager-server端节点到101机器
yum install -y cloudera-manager-server
3、在mysql中建CM需要库
登录数据库
mysql -uroot -proot
执行sql语句
mysql> create database cmf character set utf8;
mysql> grant all privileges on cmf.* to 'cmf'@'%' identified by 'cmf_1234' with grant option;
刷新数据库
mysql> flush privileges;
再次登录数据库,以cmf身份,数据库密码cmf_1234
mysql -ucmf -pcmf_1234
4、注入需要的库
注入CM-server库与CM-agent端的server
pwd
/usr/share/java
执行
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql cmf cmf cmf_1234
四、配置Cloudera-Manager端
1、安装启动CM
启动
service cloudera-scm-server start
查看启动日志
cd /var/log/cloudera-scm-server/
tail -f cloudera-scm-server.log
【主要查看2个地方】
0.0.0.0:7180
Started Jetty server
------看到这,说明server端启动成功
[root@lyc-80-101 cloudera-scm-server]# pwd
/var/log/cloudera-scm-server
[root@lyc-80-101 cloudera-scm-server]# tail -f cloudera-scm-server.log
2、打开主机7180页面
浏览器输入
192.168.80.101:7180
用户名admin 密码admin
实验环境,选择免费版即可
给集群起个名字 bigdata_cdh //名字随便起
添加集群主机IP
192.168.80.[101-103]
3、选择存储库
存储库位置
http://192.168.80.101/cdh6.3.2
4、填写SSH 登录凭据
分发数据到各节点,注意是否报错-----ps等待时间大约10分钟
注意观察后台日志
持续观察后台日志
5、在3台机器上全部执行以下命令
echo 10 > /proc/sys/vm/swappiness
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo "vm.swappiness = 10" >> /etc/sysctl.conf
sysctl -p
vim /etc/rc.local
------------
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
-----------
6、必须先安装zk组件
五、安装集群组件
1、排查页面集群信息
查看管理页面报错,需先处理掉报错信息
重启集群后再看管理页面已经没异常信息了
2、安装hdfs组件
排除hdfs告警信息
排除集群告警信息
排除DataNode节点告警
3、安装YARN
安装过程如下
查看告警信息
告警已消除
4、安装hive
安装hive之前,先创建数据库
在101登录mysql数据库
mysql -uroot -proot
执行需要创建的数据库sql语句
-------------------
create database cdh_hive default character set latin1;
grant all privileges on cdh_hive.* to 'hive'@'%' identified by 'Hive_123' with grant option;
create database cdh_oozie default character set utf8;
grant all privileges on cdh_oozie.* to 'oozie'@'%' identified by 'Oozie_123' with grant option;
create database cdh_hue default character set utf8;
grant all privileges on cdh_hue.* to 'hue'@'%' identified by 'Hue_123' with grant option;
create database cdh_rm default character set utf8;
grant all privileges on cdh_rm.* to 'rm'@'%' identified by 'Rm_123' with grant option;
flush privileges;
--------------------
解读
数据库cdh_hive 用户名hive 密码Hive_123 //目前只记住这个即可
数据库cdh_oozie 用户名oozie 密码Oozie_123
数据库cdh_hue 用户名hue 密码Hue_123
数据库cdh_rm 用户名rm 密码Rm_123
记住端口号
Hive Metastore 服务器端口 9083
Hive Server2 服务器端口 10000
5、安装Impala
警告提醒,要求重启hdfs,重启即可
6、安装spark
告警提示,需要重启Yarn
配置hive计算引擎,由MapReduce变为spark
7、安装Hbase
安装完成即可
8、安装Flume
9、安装Sqoop
10、安装Oozie
由于需要有数据库支撑,填写数据库账号、密码,测试后正常
在安装hive的时候,已经创建过的数据库有
数据库cdh_oozie 用户名oozie 密码Oozie_123
11、安装Kafak
12、安装Hue
填写hue数据库账号、密码
数据库cdh_hue 用户名hue 密码Hue_123
13、其他操作
开启hdfs权限
vim /etc/passwd
测试
su - hdfs
hdfs dfs -ls /
hdfs dfs -ls /
查看hdfs状态
查看yarn界面
跑一个圆周率程序测试下
hadoop jar /opt/cloudera/parcels/CDH/jars/hadoop-examples.jar pi 16 1000
去yarn的webUI界面查看计算提交状态
跑完后的状态
点log可以查看日志
查看map task
查看reduce task
为什么map task有16个?二reduce task只有1个?
因为MR计算的时候,map端是分开计算的,reduce端是合并计算结果,然后进行结果输出,体现的‘分而治之’思维。
查看下MR计算后hdfs上的文件夹
14、测试hive
可以直接输入hive,进行连接,但是连接后的数据端查看不方便
我们可以考虑使用beeline进行hive操作
beeline其实连接的是hiveserver2客端户
-----------
beeline
!connect jdbc:hive2://localhost:10000/default
创建test01数据库,测试下hive功能是否正常
0: jdbc:hive2://localhost:10000/default> creat database test01;
0: jdbc:hive2://localhost:10000/default> show databases;
+----------------+
| database_name |
+----------------+
| default |
| test01 |
+----------------+
0: jdbc:hive2://localhost:10000/default> use test01;
建表
CREATE TABLE test_data (
id INT,
name STRING,
age INT
) STORED AS ORC;
0: jdbc:hive2://localhost:10000/default> show tables;
+------------+
| tab_name |
+------------+
| test_data |
+------------+
将生成1000条随机数据,并插入到test_data表中
INSERT INTO TABLE test_data
SELECT
rand() * 100 AS id,
concat('name', rand() * 100) AS name,
rand() * 100 AS age
FROM
test_data
LIMIT 1000;
15、hue查看
主要查看作业界面
其他功能,有时间再慢慢研究
【总结】
CDH确实可以简化大数据集群的安装,但是资源开销比较大
对于平时做测试实验的我们来说,二进制安装单台机器测试数据即可
在企业真是的生产环境中,CDH确实优势明显,能快速部署大数据集群。