Version: v0.1
Last Update: July/23/2021
Keywords:CDH,Hadoop,Big Data Platform,Hyper-V,Virtual Machine
0. 背景
- 因想要学习大数据各种相关组件和技术,而自家有台台式机可以折腾,购买所需配置的云服务器又太贵,故准备自行搭建CDH集群。
- 最初准备使用Ubuntu+VKVM,但台式机家人共享,双系统切换也很麻烦,故考虑在Win10一个平台解决所有问题。
- 因有Win10专业版,VMWare Workstation要收费,VirtualBox是Oracle家的不喜欢,因此尝鲜玩玩Hyper-V。
- 以Win10专业版21H1+Hyper-V为例,若使用MacOS/Linux+VMWare/VirtualBox/KVM,则需依据实际情况参考操作。
- Hyper-V需要在BIOS中开启CPU虚拟化,具体操作略。
- 安装过程尽可能参考Cloudera官方文档,其余参考文章也都备注了来源。
整体思路如下:
- 规划好整个集群的数量、配置、角色,准备好所有软件包。
- 因台式机单机资源有限,同时开启多台虚拟机比较费,故先配置一台虚拟机A,尽可能将所有公共的配置设置好,再复制出其余虚拟机。
- 需要有一台虚拟机B,作为CM Server和CDH私有仓库服务器,用于安装其余虚拟机所用的所有服务。其余所有虚拟机C的设置在安装CDH前都是一样的。
- 因此操作流程为:
- 配置A
- 由A生成B,配置B为CM Server和CDH私有仓库服务器
- 由A生成C,配置C为CM Agent
- 由C生成DEFG等
- 配置DB
- 安装CDH
文中操作说明:
- 文中叙述的可选操作或命令,如果是斜体的 可选:xxx 或在命令块注释内,是我在自己搭建的实际操作中没有执行的,否则是执行了的。
- 操作涉及到Hosts/Hostname/IP/路径/文件命名/参数名/参数值等,均以集群规划部分的描述为示范。若使用不同的配置项,可将本文下载下来,查找替换成自己的配置再看更舒服。
- 使用命令行操作,不使用界面。其实若PowerShell,鼠标操作可能更简单。
- PowerShell命令行,默认需要以管理员身份运行终端,且仅在Terminal/PowerShell中验证过。
- Shell操作,默认需要sudo或以root用户执行。
- 如果使用yum等命令反应迟缓,可以自行配置国内proxy源加速访问。
- 涉及到vi修改文件,含义如下:
- 修改一行 (modify: from xxx to xxx)
- 添加一行 (append: xxx)
- 注释一行 (comment: # xxx),也可以删除该行
特别感谢参考文章:
1. 集群规划
需要准备的软件和版本。
- CDH:6.3.2
- OS:CentOS 7,参考-Cloudera Enterprise 6.3.x Supported Operating Systems
- DB:MySQL 5.7,参考-Database Requirements
- JDK:Oracle 1.8,参考-Java Requirements
1.1 硬件与角色规划
参考-CDH Cluster Hosts and Role Assignments
依据官方的"20 Worker Hosts with High Availability"角色搭配建议和最低硬件要求,整理图表如下。
其中"4c2g"代表官方建议4核CPU,2GB内存。因磁盘空间一般不是问题,故没有列出。
星号*表示该角色没有计入实际搭建和操作中,只是规划在表格中。
"Final Config"是依据实际最终搭建完成后的运行情况,倒推出的最低配置,仅供参考。
如果宿主机内存只有16~32GB,可以使用"10 Worker Hosts without High Availability"搭配,且将DataNode放在所有VM上,三台VM即可满足,但实用性可能不足,即无法快乐的跑Job。
Service | Role | master01 | master02 | master03 | utility01 | gateway01 | node001 | node002 | node003 | Total |
---|---|---|---|---|---|---|---|---|---|---|
HDFS | NameNode | 4c2g | ||||||||
SecondaryNN | 4c2g | |||||||||
*JournalNode | 1c1g | 1c1g | 1c1g | |||||||
*ZKFC | + | + | ||||||||
DataNode | 4c4g | 4c4g | 4c4g | |||||||
YARN | ResourceManager | 1c6g | *1c6g | |||||||
JobHistoryServer | 1c1g | |||||||||
NodeManager | 8c1g | 8c1g | 8c1g | |||||||
ZK | ZooKeeper | 4c1g | 4c1g | 4c1g | ||||||
Hive | HiveServer2 | 4c4g | ||||||||
Metastore Server | 4c4g | |||||||||
Hue | Server&LB | 1c4g | ||||||||
CM | All Services | 4c12g | ||||||||
Oozie | Server | 1c1g | ||||||||
DB | MySQL | 2c4g | ||||||||
*Kafka | *Kafka | 2c4g | 2c4g | 2c4g | ||||||
*Spark | *History Server | 1c1g | ||||||||
*HBase | *Master | 4c4g | ||||||||
*Thrift Server | 2c1g | |||||||||
*Region Server | 4c8g | 4c8g | 4c8g | |||||||
Max CPU Cores | 4 | 4 | 4 | 4 | 4 | 8 | 8 | 8 | 44 | |
Total Memory | 11 | 4 | 2 | 20 | 8 | 5 | 5 | 5 | 60 | |
Final Config | 4c16g | 4c8g | 4c4g | 4c16g | 4c8g | 4c8g | 4c8g | 4c8g | 16c64g |
1.2 各VM的FQDN与IP规划
IP Addr | FQDN | short name |
---|---|---|
10.10.64.11 | master01.cdh.lionxcat.com | m01 |
10.10.64.12 | master02.cdh.lionxcat.com | m02 |
10.10.64.13 | master03.cdh.lionxcat.com | m03 |
10.10.64.51 | utility01.cdh.lionxcat.com | ut01 |
10.10.64.71 | gateway01.cdh.lionxcat.com | gw01 |
10.10.64.101 | node001.cdh.lionxcat.com | n001 |
10.10.64.102 | node002.cdh.lionxcat.com | n002 |
10.10.64.103 | node003.cdh.lionxcat.com | n003 |
10.10.64.250 | centos7.cdh.lionxcat.com | *c7 |
c7是模板机,不是CDH集群中的成员,用于复制出其余所有VM。
2. 宿主机环境准备
2.1 配置Terminal/PowerShell环境
- 安装Terminal和插件的方法略。
如果对某个PowerShell命令不熟悉,可以使用:
Get-Help New-VM -Online
- 可选,配置好hosts,方便宿主机访问VM。
# 用管理员权限修改 C:\Windows\System32\drivers\etc\hosts
ipconfig /flushdns
2.2 安装Hyper-V
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
# 或者可以使用DISM安装