2021-03-14~15~16 大数据课程笔记 day53day54day55

本文详述了大数据集群的搭建与管理,包括集群环境规划、CDH的介绍及其安装管理,以及Cloudera Manager的安装步骤。重点讲解了Cloudera Manager在环境准备、配置、分发、安装等方面的具体操作,并对比了CDH与原生Hadoop的差异。此外,文章还介绍了Hive、Impala和Oozie的安装与使用,以及它们在大数据处理中的角色和优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

时间煮雨
@R星校长

1. 大数据集群搭建及管理问题

  • 提出问题:
    需要搭建1000台服务器的集群,其中集群包含Hive、Hbase、Flume、Kafka、Spark等集群,需要多长时间搭建好?
  • 思考:
    搭建四台集群与搭建1000台集群的区别?比较相似。
  • 解决问题:(以搭建HDFS为例)

1. 集群环境规划:

  首先我们需要进行集群基础环境的规划:比如每台节点的网络ip规划,节点时间同步,每台节点的名称,每台节点安装jdk,节点之间配置免密等。

  其次需要进行Hadoop的集群规划:比如搭建HDFS的版本,搭建的HDFS模式,搭建单机模式?还是完全分布式模式?还是HA的完全分布式模式?搭建HDFS是否需要依赖?比如zookeeper。

  最后对节点进行规划:比如那些节点搭建zookeeper?那些节点搭建Hadoop集群等。

2. 实际搭建步骤:
  基础环境的搭建。
  搭建zookeeper集群。
  搭建HDFS集群。

  • 存在的问题:
    • 各个大数据技术包的下载。升级复杂。
    • 配置文件多节点之间分发。部署过程复杂。
    • 大数据技术各个版本的匹配兼容。版本对应混乱,兼容性差。
    • 集群使用状态、日志查看麻烦。去节点查看详细内容,安全性差。

2. CDH简介

  • CDH简介:

  目前Hadoop发行版非常多,除了原生的Apache Hadoop外,还有Cloudera发行版(CDH)、Hortonworks发行版[2018年与Cloudera公司已经合并],MapR的MapR产品、AWS[Amazon Web Services]的EMR[Elastic MapReduce]等。目前市场份额占比最高的是前三家。所有这些发行版都是基于Apache Hadoop衍生出来的,之所以有这么多版本,是由于Apache Hadoop的开源协议决定的:任何人可以对其进行修改,并作为开源或者商业产品发布或者销售。
  Apache Hadoop 版本: 最原始的版本,所有的发行版都是基本这个版本改进,也称为社区版Hadoop。
  Cloudera版本:Cloudera’s Distribution Including Apache Hadoop ,简称CDH。
  Hortonworks版本:Hortonworks Data Platform ,简称“HDP”。
  对于国内的用户来说,CDH版本使用最多。CDH基于Web的用户界面,支持大多数Hadoop的组件,包括:HDFS、MapReduce、Hive、Hbase、Zookeeper等组件,并且简化了大数据平台的安装和使用,使集群方便管理。
  Cloudera 的CDH和Apache原生的Hadoop的区别如下:

  1. CDH对版本的划分非常清晰,CDH共有6个版本,前三个版本已经不再更新,目前更新的两个版本为CDH5和CDH6,CDH4基于Hadoop2.0,CDH5基于Hadoop2.2-2.6,CDH6基于Hadoop3.0,而原生的Apache Hadoop版本比较多,CDH相比原生Apache Hadoop做到版本统一管理。
  2. CDH相比原生Hadoop 在兼容性、安全性、稳定性上有较大改善,对Hadoop一些bug进行了修复,支持Kerberos安全认证,更新速度快且CDH文档完善清晰。
  3. CDH支持yum包,rpm包,tar包,Cloudera Manager几种方式安装,原生的Apache Hadoop只支持tar包安装。
  4. 提供了部署、安装、配置工具,大大提高了集群部署的效率,可以在短时间内部署好集群。
  5. 运维简单,提供了管理、监控、诊断、配置修改工具,管理配置方便,定位问题快速,准确,使运维工作简单高效。

Server: Cloudera Manager 的核心是 Cloudera Manager Server ,Server 管理控制台服务和托管应用程序逻辑,负责软件的安装、配置、服务的启动与关闭及管理集群。

Agent: 安装在每台主机上。Agent 负责进程的启动和停止,解压配置,触发安装及监控主机。

Management Service: 由一组角色组成的服务,这些角色执行各种监视,警报和报告功能。

DataBase: 存储配置及监控信息。

ClouderaRepository:Cloudera Manager 分发软件的存储库。

Clients: 与Server交互的接口,有两部分,Admin Console : 管理员 web 界面版。Api: 用于开发者创建Cloudera Manager程序。

3. Cloudera Manager安装

  • 系统环境准备,安装基础环境。

1. 选择三台已经安装 Centos7 Liunx 系统的节点,分配资源。

  ClouderManager6.3.x 版本支持的系统如下:在这里插入图片描述

  安装 CDH 节点推荐内存为 64G,大部分内存被 Cloudera Management Service 占用,因为做了大量的数据分析和整合。这里,划分三台节点如下:

节点名称 节点ip 节点角色 分配内存
cm1 192.168.179.201 Server,Agent 16G
cm2 192.168.179.202 Agent 4G
cm3 192.168.179.203 Agent 4G

针对目前学习来说:

如果实际的物理机器内存为32G,推荐cm Server内存为16G,cm Agent内存分别为4G。

如果实际的物理机器内存为16G,推荐cm Server内存为10G,cm Agent内存分别为2G。

如果实际的物理机器内存为12G,推荐cm Server内存为8G,cm Agent内存分别为2G。

如果实际的物理机器内存为8G,推荐cm Server内存为6G,cm Agent内存分别为2G。

  注意:后两种情况,实际机器内存不足,需要在VM虚拟机中设置允许交换内存。设置方式如下:

  在VMware中点击“编辑”->“首选项”,找到内存,预留内存是给当前真实物理机预留的内存量。在额外内存中,如果实际物理机内存不足10G就设置“允许交换大部分虚拟机内存”,设置这个的意思是当虚拟机内存不足时,可以允许内存与磁盘交换数据,从而获取更多的内存执行当前运行的程序。在这里插入图片描述
  截止到这里,以上只是准备好的三台划分好内存和核心的空节点。

  注意:实际物理机器安装Vmware的磁盘至少还要预留50G磁盘空间,这里建议给每台虚拟机200G磁盘。

2. 配置ip

  在每台节点上配置 ip,打开 /etc/sysconfig/network-scripts/ifcfg-ens33 编辑内容如下,这里的 ifcfg-ensxx 名称不定:

1.	TYPE=Ethernet
2.	BOOTPROTO=static #使用static配置
3.	DEFROUTE=yes
4.	PEERDNS=yes
5.	PEERROUTES=yes
6.	IPV4_FAILURE_FATAL=no
7.	IPV6INIT=yes
8.	IPV6_AUTOCONF=yes
9.	IPV6_DEFROUTE=yes
10.	IPV6_PEERDNS=yes
11.	IPV6_PEERROUTES=yes
12.	IPV6_FAILURE_FATAL=no
13.	NAME=ens33
14.	UUID=17b5d8c8-5d5d-4c3b-a75c-6fe7200e0bcb
15.	DEVICE=ens33
16.	ONBOOT=yes #开机启动此配置
17.	IPADDR=192.168.179.201 #静态IP
18.	GATEWAY=192.168.179.2 #默认网关
19.	NETMASK=255.255.255.0 #子网掩码
20.	DNS1=192.168.179.2 #DNS配置

  重启网络服务使ip生效:

1.	#重启网络服务 centos6 : service network restart
2.	systemctl restart network
3.	
4.	#查看ip centos6 : ifconfig
5.	ip addr

  三台节点配置的 ip 分别为:
  192.168.179.201,192.168.179.202,192.168.179.203

  注意:每台节点克隆后需要删除每台节点/etc/udev/rules.d/70-persistent-net.rules 文件,清除 mac 地址。重启每台节点即可。

3. 配置每台节点的hostname

  修改每台节点 /etc/hostname 文件 (centos6:/etc/sysconfig/network),每台节点直接覆盖写上对应的 hostname 即可,分别为:cm1,cm2,cm3。设置好每台节点的 hostname 之后重启每台节点即可生效。

1.	vi /etc/hostname
2.	cm3 #hostname文件中只需配置这一行
3.	

4. 配置节点ip、hostname映射

  在每台节点/etc/hosts文件后追加如下内容,配置ip与hostname之间的映射。

1.	192.168.179.201 cm1
2.	192.168.179.202 cm2
3.	192.168.179.203 cm3

5. 关闭防火墙

  在每台节点上执行如下命令,关闭防火墙,并设置开机不启动:

1.	#检查防火墙状态:centos6 : service iptables status
2.	firewall-cmd --state
3.	
4.	#关闭防火墙,centos6 : service iptables stop
5.	systemctl stop firewalld
6.	
7.	#设置开机不启动防火墙: centos6 :chkconfig iptables off
8.	systemctl disable firewalld
9.	
10.	#检查防火墙开机启动状态:
11.	systemctl list-unit-files | grep firewall
12.	
13.	#检查机器中的启动服务: centos6 : chkconfig --list
14.	systemctl list-unit-files

6. 关闭SELinux

  SELinux就是Security-Enhanced Linux的简称,安全加强的linux。传统的linux权限是对文件和目录的owner, group和other的rwx进行控制,而SELinux采用的是委任式访问控制,也就是控制一个进程对具体文件系统上面的文件和目录的访问,SELinux规定了很多的规则,来决定哪个进程可以访问哪些文件和目录。虽然SELinux很好用,但是在多数情况我们还是将其关闭,因为在不了解其机制的情况下使用SELinux会导致软件安装或者应用部署失败。
在每台节点/etc/selinux/config中将SELINUX=enforcing改成SELINUX=disabled即可。

7. 配置本地yum

  这里我们选择使用本地yum源。需要在VM中设置下连接光驱,步骤如下图。在这里插入图片描述
  在cm1、cm2、cm3节点上配置本地yum源:
  每台节点创建/mnt/cdrom目录:

1.	mkdir -p /mnt/cdrom

  每台节点执行如下命令,将光盘设备/dev/sr0挂载到/mnt/cdrom目录:

1.	mount /dev/sr0 /mnt/cdrom/
2.	mount: block device /dev/sr0 is write-protected, mounting read-only

  每台节点执行命令:df -h查看是否挂载成功:

1.	df -h

  上面的mount命令挂载后在机器重启后会失效,为了可以实现开机自动挂载,可以在每台节点的/etc/fstab文件的最后面加入下面语句:

1.	/dev/sr0 /mnt/cdrom iso9660 defaults 0 0

  下面可以创建本地yum源,在每台节点的/etc/yum.repos.d目录下创建local.repo文件,内容如下:

1.	[local]
2.	name=local repo
3.	baseurl=file:///mnt/cdrom
4.	enable=1
5.	gpgcheck=1
6.	gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

  以上内容中,在centos6 中需要配置gpgkey内容如下: gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6。baseurl是指Yum源的地址,该路径下有个repodata目录,就是yum 安装源目录。file://表示yum源为文件。

  如果只想让local.repo生效,可以在每台节点的/etc/yum.repos.d目录下创建一个backup目录,将其他的以“.repo”结尾的文件都移动到backup目录中。

1.	mkdir -p /etc/yum.repos.d/backup
2.	mv /etc/yum.repos.d/CentOS-* /etc/yum.repos.d/backup/

在每台节点上执行以下命令,更新yum源:

1.	yum clean all 
2.	yum makecache

8. 配置SSH免秘钥登录

  在CDH中需要任意两个节点之间都可以免秘钥登录。节点两两免秘钥的根本原理如下:假设A节点需要免秘钥登录B节点,只要B节点上有A节点的公钥,那么A节点就可以免密登录当前B节点。

  第一,需要在每台节点上安装ssh客户端,否则,不能使用ssh命令(最小化安装Liunx,默认没有安装ssh客户端),这里在Centos7系统中默认已经安装,此步骤可以省略:

1.	yum -y install openssh-clients

  第二,在每台节点执行如下命令,在每台节点的“~”目录下,创建.ssh目录,注意,不要手动创建这个目录,因为有权限问题。

1.	cd ~
2.	ssh localhost
3.	#这里会需要输入节点密码#
4.	exit

  第三,在每台节点上执行如下命令,给当前节点创建公钥和私钥:

1.	ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

  第四,将cm1,cm2,cm3的公钥copy到cm1上,这样,cm1,cm2,cm3节点都能登录cm1节点。命令如下:

1.	在cm1上执行如下命令,需要输入密码:
2.	[root@cm1 .ssh]# ssh-copy-id cm1 #会在当前~/.ssh目录下生成authorized_keys文件,文件中存放当前cm1的公钥#
3.	在cm2上执行如下命令,需要输入密码:
4.	[root@cm2 ~]# ssh-copy-id cm1 #会将cm2的公钥追加到cm1节点的authorized_keys文件中#
5.	在cm3上执行如下命令,需要输入密码:
6.	[root@cm3 ~]# ssh-copy-id cm1 #会将cm3的公钥追加到cm1节点的authorized_keys文件中#

  最后,将 cm1 节点上~/.ssh/authorized_keys拷贝到 cm2 和 cm3 节点的~/.ssh/目录下,执行如下命令:

1.	在cm1上执行如下命令,需要输入密码:
2.	[root@cm1 .ssh]# scp ~/.ssh/authorized_keys cm2:`pwd`
3.	[root@cm1 .ssh]# scp ~/.ssh/authorized_keys cm3:`pwd`

经过以上步骤,节点两两免密完成。

9. 节点同步时间

  在 cm1 , cm2 , cm3 每 台节点上执行如下命令,安装 ntp 服务及配置定时任务:

1.	yum -y install ntp #安装ntp服务#
2.	rm -rf /etc/localtime #删除现有时区#
3.	ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #修改上海时区#
4.	/usr/sbin/ntpdate -u pool.ntp.org #同步时间#
5.	date #查看时间#
6.	#crontab -e 写入如下定时内容:#
7.	*/10 * * * * /usr/sbin/ntpdate -u pool.ntp.org >/dev/null 2>&1 #同步时间定时任务#
8.		systemctl restart crond #重启定时任务 ,centos6:service crond restart# 
9.	crontab -l #查看定时任务#
10.	
11.	systemctl enable ntpd #设置ntpd 开机启动,不然后期安装CDH时会有警告。centos6:chkconfig ntpd on
12.	systemctl start ntpd #启动ntpd服务 service ntpd start

10. 安装 jdk

  给每台节点安装jdk,这里我们安装的CDH版本为6.3.2,在官网:
https://docs.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_java_requirements.html#java_requirements
  描述中这里需要使用 jdk8,但是对应的 jdk 小版本有要求,具体如下:在这里插入图片描述
  这里我们选择jdk8版本中的1.8u181版本安装。在每台节点安装jdk,在每台节点中创建/software目录,将jdk8安装包通过ftp工具上传到/software目录下,每台节点执行如下命令安装jdk:

1.	[root@cm1 ~]# mkdir -p /software
2.	[root@cm1 ~]# rpm -ivh /software/jdk-8u181-linux-x64.rpm

  以上命令执行完成之后,会在每台节点的/usr/java下安装jdk。在每台节点配置jdk的环境变量:

1.	vim /etc/profile
2.	#在每台节点中配置profile文件,在最后追加内容如下:#
3.	export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64
4.	export PATH=$JAVA_HOME/bin:$PATH
5.	export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

  执行完成以上命令之后,在每台节点上执行 “source /etc/profile”使配置生效。

11. 安装 mysql 数据库

  在cm1中安装mysql数据库,在Centos6中安装mysql可以直接执行命令:

yum install –y mysql-server

  但是在Centos7中yum源中没有自带mysql的安装包,需要执行命令下载mysql 的rpm配置文件,然后进行repo的安装,安装repo后在/etc/yum.repos.d路径下会有对应的mysql repo配置,然后再安装mysql,这里安装的mysql是5.7版本。命令如下:

1.	#下载mysql repo,下载完成后会在当前执行命令目录下生成 rpm -ivh mysql57-community-release-el7-9.noarch.rpm文件。
2.	[root@cm1 ~]# wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
3.	
4.	#安装repo,安装完成后再/etc/yum.repos.d 目录下会生成mysql的 repo文件
5.	[root@cm1 ~]# rpm -ivh mysql57-community-release-el7-9.noarch.rpm
6.	
7.	#安装mysql
8.	[root@cm1 ~]# yum install mysql-server -y

  执行完成之后,启动mysql:systemctl start mysqld,也可以使用service mysqld start启动msyql。

  mysql5.7开始初始登录mysql需要使用初始密码,启动后登录mysql需要指定安装时的临时密码,使用命令:grep ‘temporary password’ /var/log/mysqld.log 获取临时密码后,执行如下语句:

1.	#使用临时密码登录mysql
2.	[root@cm1 log]# mysql -u root -pK-BJt9jV0jb0
3.	
4.	#默认mysql密码需要含有数字、大小写字符、下划线等,这里设置密码验证级别为低即可
5.	mysql> set global validate_password_policy=LOW;
6.	
7.	#默认mysql密码设置长度是8位,这里修改成6位
8.	mysql> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值