栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

CDH集群的搭建【亲自搭建并把详细流程做了记录,对于初学很友好】

CDH集群的搭建【亲自搭建并把详细流程做了记录,对于初学很友好】

文章目录

前言:一、集群准备安装

1.1 修改服务器hosts文件(所有节点)1.2 防火墙设置(所有节点)1.3 selinux关闭(所有节点)1.4 时间同步

1.4.1 安装ntp时间同步服务器(所有节点)1.4.2 修改主机名1.4.3 所有从节点 1.5 编写集群分发脚本xsync1.6 SSH无密登录配置1.7 JDK准备1.8 MySQL安装(主节点)

1.8.1 安装包准备1.8.2 安装MySQL1.8.3 配置MySQL1.8.4 创建CM用的数据库1.8.5 jdbc连接 1.9 CM部署

1.9.1 下载第三方依赖(所有节点)1.9.2 主节点安装daemons, server, agent1.9.3 子节点安装daemons, agent1.9.4 所有节点启动 agent1.9.5 页面配置1.9.6 Hdfs Web UI访问端口查询1.9.7 Hdfs Web UI文件夹创建

前言:

最近接到搭建CDH集群的任务
在集群搭建过程中一直在网上查询搭建流程,资料千奇百怪。
总体来说网上提供的资料总会在关键部分缺斤少两,对新手很不友好,中间踩坑无数
碰到了不少问题并总结了一套搭建平滑的流程
在这里进行总结,方便下次再次进行集群搭建

服务器是aliyun服务器,新租的服务器从头开始搭建。
搭建过程中的错漏或者隐患欢迎大家指出

一、集群准备安装 1.1 修改服务器hosts文件(所有节点)

[root@hadoop001 ~]# vim /etc/hosts

127.0.0.1 localhost  localhost
::1     localhost       localhost.localdomain   localhost6      localhost6.localdomain6
172.17.138.24 hadoop001
172.17.138.25 hadoop002
172.17.138.23 hadoop003

注意:这里每个人不一样,ip填写的是私有ip,做完后ping一下。

1.2 防火墙设置(所有节点)
#关闭防火墙
[atguigu@hadoop102 ~]$ systemctl stop firewalld
#禁用防火墙
[atguigu@hadoop102 ~]$ systemctl disable firewalld
#清空防火墙规则
[atguigu@hadoop102 ~]$ iptables -F
1.3 selinux关闭(所有节点)

[atguigu@hadoop102 ~]$ cat /etc/selinux/config
修改
SELINUX=disabled

1.4 时间同步 1.4.1 安装ntp时间同步服务器(所有节点)
安装ntpd服务
检查ntp是否已安装,否则安装
[root@hadoop001 ~]# rpm -qa|grep ntp
安装ntp
[root@hadoop001 ~]# yum install ntp
激活ntp服务
[root@hadoop001 ~]# systemctl enable ntpd
永久开启ntpd业务
[root@hadoop001 ~]# systemctl start ntpd 
查看ntp服务状态,切记要reboot重启服务器,否则下面指令执行后无法时间同步
[root@hadoop001 ~]# systemctl status ntpd 


所有节点设置时区,中国上海:
[root@hadoop001 ~]# timedatectl set-timezone Asia/Shanghai

1.4.2 修改主机名
[root@hadoop001 ~]# hostnamectl set-hostname "hadoop102"
在主节点hadoop102编辑ntp.conf文件,其它4台服务器同步即可
[root@hadoop001 ~]# vim /etc/ntp.conf
server 127.127.1.0
fudge 127.127.1.0 startum 10

server注释掉

1.4.3 所有从节点

添加主节点

[atguigu@hadoop102 ~]$ vi /etc/ntp.conf


在其它节点上手动同步rjtx221的时间

[atguigu@hadoop102 ~]# ntpdate -u hadoop102


所有节点启动时间同步

[atguigu@hadoop102 ~]# timedatectl set-ntp yes

查看同步状态

[atguigu@hadoop102 ~]# ntpstat

1.5 编写集群分发脚本xsync

①在用的家目录/home/atguigu下创建bin文件夹

[atguigu@hadoop102 ~]$ mkdir bin

②在/home/atguigu/bin目录下创建xsync文件,以便全局调用

[atguigu@hadoop102 ~]$ cd /home/atguigu/bin
[atguigu@hadoop102 ~]$ vim xsync

在该文件中编写如下代码

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
  echo Not Enough Arguement!
  exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
  echo ====================  $host  ====================
  #3. 遍历所有目录,挨个发送
  for file in $@
  do
    #4 判断文件是否存在
    if [ -e $file ]
    then
      #5. 获取父目录
      pdir=$(cd -P $(dirname $file); pwd)
      #6. 获取当前文件的名称
      fname=$(basename $file)
      ssh $host "mkdir -p $pdir"
      rsync -av $pdir/$fname $host:$pdir
    else
      echo $file does not exists!
    fi
  done
done

③修改脚本xsync具有执行权限

[atguigu@hadoop102 bin]$ chmod +x xsync

④测试脚本

[atguigu@hadoop102 bin]$ xsync xsync

如果报错是缺少rsync

如果该命令执行依然无法安装rsync

[atguigu@hadoop102 bin]$ yum install rsync -y

下载rsync的rpm包,依赖包下载网页:
https://centos.pkgs.org/7/centos-x86_64/


红框处直接搜索需要的依赖包 rsync

根据当前系统选择对应的rsync包

复制红框出网址,在网址下载依赖
将依赖包通过xshell拖入服务器,通过rpm安装

[root@cdh3 software]# rmp -ivh rsync-3.1.2-10.el7.x86_64.rpm
1.6 SSH无密登录配置

(1)hadoop102上生成公钥和私钥:

[atguigu@hadoop102 .ssh]# ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

(2)将hadoop102公钥拷贝到要免密登录的目标机器上

[atguigu@hadoop102 .ssh]$ ssh-copy-id cdh0
[atguigu@hadoop102 .ssh]$ ssh-copy-id cdh1
[atguigu@hadoop102 .ssh]$ ssh-copy-id cdh2
[atguigu@hadoop102 .ssh]$ ssh-copy-id cdh3

(3)hadoop103上生成公钥和私钥:

[atguigu@hadoop103 .ssh]$ ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

(4)将hadoop103公钥拷贝到要免密登录的目标机器上

[atguigu@hadoop103 .ssh]$ ssh-copy-id hadoop102
[atguigu@hadoop103 .ssh]$ ssh-copy-id hadoop103
[atguigu@hadoop103 .ssh]$ ssh-copy-id hadoop104
1.7 JDK准备

1)卸载现有JDK(3台节点)

[atguigu@hadoop102 opt]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps
[atguigu@hadoop103 opt]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps
[atguigu@hadoop104 opt]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps
(1)rpm -qa:表示查询所有已经安装的软件包
(2)grep -i:表示过滤时不区分大小写
(3)xargs -n1:表示一次获取上次执行结果的一个值
(4)rpm -e --nodeps:表示卸载软件

2)用XShell工具将JDK导入到hadoop102的/opt/software文件夹下面

3)解压JDK到/opt/module目录下

[atguigu@hadoop102 software]# mkdir /usr/java
[atguigu@hadoop102 software]# tar -zxvf jdk-8u212-linux-x64.tar.gz -C /usr/java

修正用户组/用户权限:

[atguigu@hadoop102 software]# chown -R root:root /usr/java/jdk1.8.0_212/
[atguigu@hadoop102 software]# xsync /usr/java/jdk1.8.0_212

4)配置JDK环境变量(三台节点)

(1)配置/etc/profile

[atguigu@hadoop102 module]# vim /etc/profile

添加如下内容,然后保存(:wq)退出

#JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

(2)让环境变量生效(所有节点)

[atguigu@hadoop102 software]$ source /etc/profile

(3)查看是否安装成功

[atguigu@hadoop102 software]$ java -version
1.8 MySQL安装(主节点) 1.8.1 安装包准备

1)将安装包和JDBC驱动上传到/opt/software,共计6个

01_mysql-community-common-5.7.16-1.el7.x86_64.rpm
02_mysql-community-libs-5.7.16-1.el7.x86_64.rpm
03_mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm
04_mysql-community-client-5.7.16-1.el7.x86_64.rpm
05_mysql-community-server-5.7.16-1.el7.x86_64.rpm
mysql-connector-java-5.1.27-bin.jar

2)如果是虚拟机按照如下步骤执行

(1)卸载自带的Mysql-libs(如果之前安装过MySQL,要全都卸载掉)

[atguigu@hadoop102 software]$ rpm -qa | grep -i -E mysql|mariadb | xargs -n1 sudo rpm -e --nodeps

3)如果是阿里云服务器按照如下步骤执行
说明:由于阿里云服务器安装的是Linux最小系统版,没有如下工具,所以需要安装。
(1)卸载MySQL依赖,虽然机器上没有装MySQL,但是这一步不可少

[atguigu@hadoop102 software]# sudo yum remove mysql-libs

(2)下载依赖并安装

[atguigu@hadoop102 software]# sudo yum install libaio
[atguigu@hadoop102 software]# sudo yum -y install autoconf
1.8.2 安装MySQL

1)安装MySQL依赖

[atguigu@hadoop102 software]$ sudo rpm -ivh 01_mysql-community-common-5.7.16-1.el7.x86_64.rpm
[atguigu@hadoop102 software]$ sudo rpm -ivh 02_mysql-community-libs-5.7.16-1.el7.x86_64.rpm
[atguigu@hadoop102 software]$ sudo rpm -ivh 03_mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm

2)安装mysql-client

[atguigu@hadoop102 software]$ sudo rpm -ivh 04_mysql-community-client-5.7.16-1.el7.x86_64.rpm

3)安装mysql-server

[atguigu@hadoop102 software]$ sudo rpm -ivh 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm

注意:如果报如下错误,这是由于yum安装了旧版本的GPG keys所造成,从rpm版本4.1后,在安装或升级软件包时会自动检查软件包的签名。

warning: 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
libaio.so.1()(64bit) is needed by mysql-community-server-5.7.16-1.el7.x86_64

解决办法

[atguigu@hadoop102 software]$ sudo rpm -ivh 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm --force --nodeps

4)启动MySQL

[atguigu@hadoop102 software]$ sudo systemctl start mysqld

5)查看MySQL密码

[atguigu@hadoop102 software]$ sudo cat /var/log/mysqld.log | grep password
1.8.3 配置MySQL

配置只要是root用户 + 密码,在任何主机上都能登录MySQL数据库。
创建用户组及用户(未实践)

[atguigu@hadoop102 local]$ groupadd -g 101 dba
[atguigu@hadoop102 local]$ useradd -u 514 -g dba -G root -d /local/mysql mysqladmin
[atguigu@hadoop102 local]$ id mysqladmin
[atguigu@hadoop102 local]$ cp /etc/skel/.* /usr/local/mysql
[atguigu@hadoop102 local]$ su - mysqladmin
[atguigu@hadoop102 local]$ vi .bashrc

添加

export MYSQL_base=/usr/local/mysql
export PATH=${MYSQL_base}/bin:$PATH

赋权限和用户组

[atguigu@hadoop102 mysql]$ chown -R mysqladmin:dba /etc/my.cnf
[atguigu@hadoop102 mysql]$ chown -R 755 /usr/local/mysql
[atguigu@hadoop102 mysql]$ cp support-flies/mysql.server /etc/rc.d/init.d/mysql
[atguigu@hadoop102 mysql]$ chmod +x /etc/rc.d/init.d/mysql
[atguigu@hadoop102 mysql]$ chkconfig –add mysql
[atguigu@hadoop102 mysql]$ bin/mysqld --defaults-file=/etc/my.cnf --user=mysqladmin --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --initialize
[atguigu@hadoop102 mysql]$ cd data

1)用刚刚查到的密码进入MySQL(如果报错,给密码加单引号)

[atguigu@hadoop102 software]$ mysql -uroot -p'password'

2)设置复杂密码(由于MySQL密码策略,此密码必须足够复杂)

mysql> set password=password("Qs23=zs32");

3)更改MySQL密码策略

mysql> set global validate_password_length=4;
mysql> set global validate_password_policy=0;

4)设置简单好记的密码

mysql> set password=password("88888888");

5)进入MySQL库

mysql> use mysql

6)查询user表

mysql> select user, host from user;

7)修改user表,把Host表内容修改为%

mysql> update user set host="%" where user="root";

8)刷新

mysql> flush privileges;

9)退出

mysql> quit;
1.8.4 创建CM用的数据库

在MySQL中依次创建监控数据库、Hive数据库、Oozie数据库、Hue数据库
1)启动数据库

[root@hadoop102 ~]# mysql -uroot -p88888888

2)集群监控数据库

mysql> create database cmf DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
mysql> create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
mysql> set global validate_password_length=4;
mysql> set global validate_password_policy=0;
mysql> grant all privileges on cmf.* to 'cmf'@'%' identified by '88888888';
mysql> grant all privileges on amon.* to 'amon'@'%' identified by '88888888';

3)Hive数据库

mysql> create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

4)Oozie数据库

mysql> create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

5)Hue数据库

mysql> create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

6)关闭数据库

mysql> flush privileges;
mysql> quit;
1.8.5 jdbc连接
创建/usr/share/java
[atguigu@hadoop102 mysql]$ mkdir -p /usr/share/java
jdbc安装包移动到/usr/share/java并重命名:
[atguigu@hadoop102 mysql]$ mv /opt/software/mysql/mysql-connector-java-5.1.27-bin.jar 	/usr/share/java/mysql-connector-java.jar
1.9 CM部署 1.9.1 下载第三方依赖(所有节点)

依次在三台节点(所有Agent的节点)上执行下载第三方依赖(注意:需要联网)

[root@hadoop102 ~]# yum -y install chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb portmap httpd mod_ssl openssl-devel python-psycopg2 MySQL-python libpq.so.5
1.9.2 主节点安装daemons, server, agent
rpm -ivh cloudera-manager-daemons-6.1.0-769885.el7.x86_64.rpm 
rpm -ivh cloudera-manager-server-6.1.0-769885.el7.x86_64.rpm  # server
[root@hadoop102 ~]# vi /etc/cloudera-scm-server/db.properties
# Copyright (c) 2012 Cloudera, Inc. All rights reserved.
#
# This file describes the database connection.
#

# The database type
# Currently 'mysql', 'postgresql' and 'oracle' are valid databases.
com.cloudera.cmf.db.type=mysql

# The database host
# If a non standard port is needed, use 'hostname:port'
#com.cloudera.cmf.db.host=hadoop102:3306

# The database name
com.cloudera.cmf.db.name=cmf

# The database user
com.cloudera.cmf.db.user=cmf

# The database user's password
com.cloudera.cmf.db.password=88888888

# The db setup type
# After fresh install it is set to INIT
# and will be changed post config.
# If scm-server uses Embedded DB then it is set to EMBEDDED
# If scm-server uses External DB then it is set to EXTERNAL
com.cloudera.cmf.db.setupType= EXTERNAL

启动server和agent

主节点启动server

systemctl start cloudera-scm-server

查看日志,出现7180说明启动成功,,有错误解决错误

tail -F /var/log/cloudera-scm-server/cloudera-scm-server.log

如果在不打开防火墙的情况下可以访问端口,可以不进行防火墙打开操作
7180防火墙打开

选择配置规则->添加安全组规则

打开web界面先不要动!!!!!!!!

[root@hadoop102 ~]# rpm -ivh cloudera-manager-agent-6.1.0-769885.el7.x86_64.rpm --nodeps --force
[root@hadoop102 ~]# vi /etc/cloudera-scm-agent/config.ini
指定cm server
[General]
# Hostname of the CM server.
server_host=hadoop102

如果日志中有报错

将manifest.json文件放入 /opt/cloudera/parcel-repo/目录

1.9.3 子节点安装daemons, agent
[root@hadoop103 ~]# rpm -ivh cloudera-manager-daemons-6.1.0-769885.el7.x86_64.rpm --nodeps --force

[root@hadoop103 ~]# rpm -ivh cloudera-manager-agent-6.1.0-769885.el7.x86_64.rpm --nodeps --force
[root@hadoop103 ~]# vi /etc/cloudera-scm-agent/config.ini
指定cm server
[General]
# Hostname of the CM server.
1.9.4 所有节点启动 agent
[root@hadoop102 ~]# systemctl start cloudera-scm-agent
[root@hadoop103 ~]# systemctl start cloudera-scm-agent
[root@hadoop104 ~]# systemctl start cloudera-scm-agent
1.9.5 页面配置

选择免费版本

添加集群名

全选

配置parcel

[root@hadoop102 cm6.1]# yum install -y httpd
[root@hadoop102 cm6.1]# mkdir /var/www/html/cdh6_parcel

主节点

两个parcel文件和manifest.json文件移动到 /var/www/html/cdh6_parcel 并去除后缀
[root@hadoop102 cm6.1]# mv ../cdh6.1/CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel /var/www/html/cdh6_parcel/
[root@hadoop102 cm6.1]# service httpd start

选项下的全部移除

将httpd地址拷贝进去
http://hadoop102/cdh6_parcel

保存后选择CDH版本

单击


选择需要添加的服务(建议少选,有需要的服务后边单独配置即可)

接下来点击下一步,填写cm数据库,基本就完成了
完成图片

1.9.6 Hdfs Web UI访问端口查询

在CDH5.12搭建完成之后NameNode的Web UI 50070 访问不了。
遇到这个其实不难解决!

设置 -> HDFS -> NameNode -> NameNode Web UI 端口

1.9.7 Hdfs Web UI文件夹创建

当我们用cloudera安装好Hadoop等组件时我们在操作HDFS时可能会遇到这样的问题

Permission denied: user=root, access=WRITE, 	
inode="/":hdfs:supergroup:drwxr-xr-x

无论是用sudo hadoop dfs -mkdir 建立文件 还是 put文件,都会显示,同样的错误!!

其实是这样的,/这是文件的所有者是HDFS 权限为755 也就是只有HDFS才能对这个文件进行sudo的操作

那么接下来我们便可以这样操作文件

sudo -u hdfs hadoop fs -mkdir /user/root     

我们可以以hdfs的身份对文件进行操作

有收获?希望烙铁们来个三连击,让更多的同学看到这篇文章

1、烙铁们,关注我看完保证有所收获,不信你打我。

2、点个赞呗,可以让更多的人看到这篇文章,后续还会有很哇塞的产出。

本文章仅供学习及个人复习使用,如需转载请标明转载出处,如有错漏欢迎指出
务必注明来源(注明: 来源:csdn , 作者:-马什么梅-)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/746145.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号