搭建Hadoop集群
报告摘要
本篇实验报告主要介绍了如何通过购买华为云OBS和ECS服务,搭建开源Hadoop集群。在实验中,购买并配置了ECS服务作为Hadoop集群的主机,然后购买了OBS服务并获取了AK、SK信息,用于连接集群和OBS服务。本次实验搭建了Hadoop集群,并配置了HDFS分布式文件系统。通过本实验,深入了解了Hadoop集群的搭建方法,以及如何将其与华为云服务互联,为后续的大规模数据处理和分析提供了基础知识和实践经验。相信这次实验对进一步掌握分布式计算框架和云计算技术有着重要的意义。
1.1 实验介绍
1.1.1 关于本实验
本实验通过购买华为云OBS和华为云ECS服务,提供后续集群的搭建基础。本实验的基本步骤包含:购买并配置ECS;购买OBS并获取AK、SK信息;搭建Hadoop集群;搭建Spark集群并验证存算分离。
本实验通过搭建开源Hadoop集群帮助学员掌握Hadoop搭建方法。并且使开源Hadoop与华为云OBS服务互联,使Hadoop集群可读取OBS数据。
1.1.2 实验目的
掌握华为云OBS的购买。
掌握华为云ECS的购买。
掌握Hadoop集群搭建方法
掌握Hadoop集群与华为云OBS互联方法
1.2 购买华为云ECS
1.2.1 登录华为云
步骤 1 浏览器登录华为云
华为云地址:https://www.huaweicloud.com/
输入用户名、密码,登录。
1.2.2 购买华为云ECS
步骤 1 进入控制台,选择弹性云服务器ECS
点击“控制台”
点击框线处,展开“服务列表”
选择“弹性云服务器ECS”
步骤 2 选择购买弹性云服务器ECS
本次ECS购买需遵循以下规格:
计费模式:按需计费
可用区:可用区一
CPU架构:鲲鹏计算
规格:kc1.2xlarge.4 8vcpus|32GB
系统:CentOS7.6
系统盘:超高IO、200GB。
网络:按流量计费
其他配置:默认
步骤 3 基础配置
系统选择CentOS7.6
系统盘建议配置200GB,不建议低于100GB。
点击“下一步 网络配置”
步骤 4 网络配置
“网络”下拉选择VPC
“弹性公网IP”选择“现在购买”,并选择“按流量计费”。
点击“下一步 高级配置”
步骤 5 高级配置
ECS名称建议与手册相同,密码自行设定。其他配置默认即可,点击框线处“我已经阅读并同意《华为镜像免责声明》”。点击“下一步 确认配置”。
步骤 6 检查配置,立即购买
注:本次实验也可使用3台ECS实验。
步骤 7 查看已购买ECS
“步骤6”点击“立即购买”后,弹出如下界面。
点击“返回云服务器列表”,查看已购买ECS。
1.3 购买OBS
1.3.1 选取对象存储服务OBS
步骤 1 在“服务列表”选取“对象存储服务OBS”
步骤 2 选择创建桶
进入OBS服务后,点击右侧“创建桶”
步骤 3 参照下图购买OBS
注:区域选择与ECS相同。其他配置默认。点击“立即创建”。
步骤 4 创建并行文件系统
选择“并行文件系统”
点击右上角“创建并行文件系统”
其他配置默认,保存创建即可。
步骤 5 进入创建的OBS桶
复制该参数,保存到本地文档。
步骤 6 获取AK/SK
点击华为云页面右上角“用户名”,下拉选择“我的凭证”,点击“访问秘钥”。
点击新增访问秘钥,根据提示进行操作。
操作完成后,得到文件“credentials.csv”,打开即可得到AK/SK。
2.1 Hadoop集群搭建
2.1.1 配置ECS
步骤 1 使用putty或mobaxterm登录ECS
注:ECS的公网IP请根据实际情况进行填写。
步骤 2 下载安装包
下载hadoop安装包
cd /root
wget https://archive.apache.org/dist/hadoop/common/hadoop-2.8.3/hadoop-2.8.3.tar.gz
下载OBSFileSystem相关jar包
执行命令,下载hadoop-huaweicloud-2.8.3-hw-39.jar
cd /root
下载Openjdk
cd /root
注:安装包默认存放位置为/root。若不可使用wget下载文件,则可在实验前由授课老师提前下载完成。待实验开始前,由老师通过U盘拷贝或scp远程发送给学员。
通过mobaxterm上传包
步骤 3 配置/etc/hosts文件
查看ECS列表各节点IP
各节点执行
vim /etc/hosts
备注:vim编辑器的使用
(1) 点击键盘字母i,输入数据;
(2) 数据输入完成后,点击键盘esc,输入:wq即完成数据保存和退出编辑界面。
添加内容:
192.168.0.96 node-0001
192.168.0.87 node-0002
192.168.0.110 node-0003
192.168.0.212 node-0004
保存退出。
注:此处需要根据ECS的实际内网IP配置。
步骤 4 配置节点互信
各节点执行
ssh-keygen -t rsa
连续回车生成/root/.ssh/id_rsa.pub文件;
各节点执行:
cat /root/.ssh/id_rsa.pub
输出如下内容:
复制该命令在各节点的输出内容。
各节点执行:
vim /root/.ssh/authorized_keys
输入各节点的复制内容,保存退出。
authorized_keys内容参考如下:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsHSyUXC7vx9m6wMPabQXApnxl3qNX1HQNqfRMs7cywelaK4BT3QvxHah7ABrTj/f+VWVmTa3pCg2VBOikRtaNUT1ipbZS9sBevVMXLRCI0L2XrTdzCXcp537YwNM5Jcj6vO/fK5gv+aDH21ppxTYjY8HqEY1aeQlYrNNlduGprS0gGiZysZyvIgZY0ZuDrXcdon08gmK39Pqg+X0NhkQK+BvQVPPPlKwcehGW0RwU33wyFNqSL68ugr+9cQEM5xBR/9b41D+joFZ+OqgDQWrSHdYha5k9Oj/RbqMobqOgWWwhf7YE5QBf0KoQ8m2jFRlvl94hBh026RPBG3LxfLCP root@node-0001
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDVNaMn4BwZtZsAjIySwYidZe300TgGnrIsDjCXSFfQaXwqlJUpAoyYMr5v+0V306gDACj3HUs9eRiXcMZTE6D2asfUDYYlnahzfBi/XwN8pOT0GxguAYn7+LaV4KiJ0VMMNOn5HMs27vs4jBrM9lhPC2G9JZqyR5fivnYant7/rWhuYtAeZloEF9Leoh9hGDlPA5ULfTPdnM6DaPdaNEgiO6EN1xFTEh/1FUFE5a+tFxyXRghcUpmntwDponsPDGuOpov8vuGmQzCnTq8Fka/K8yfeyJPupuH54nccwip7CnhGPZopWfn2V/D7Iitg3+9MxiLCC8+maQwtVy46X7lb root@node-0002
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCj3T7Ds6aPq3wIwPOBvpevbFEhPVvRTwW7ITMJ6OfDqinUR6LMXVj9nQI1K3g9tWXOuWhnwuyxD8swiYDlDXtrlgwb2h7ah+F3sS7bJpVU7INgk8ebaHF4h67BkXxuNlUDPaFkCgY4YGjlUk3l9WrKgA3f8gSwT7Vi10k2d6/4H4Vn6xY2EF3zC1HRt+c7ym0dPYQgk1Hmrx7Xopn46FOOWeTHK/ouG6YU8TwKZAoDAhB61o++8cgvVck0k6KoQ974ePDa2nxTeTrGeXhxHnR0EpjJbVhAN6rIPCk6FDoByWeXhRx2Yi1ThK521Ss0qfnm160CtoYIBxkg5EjX/K/ root@node-0003
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD1Zz+GwULH873UKAWm4HjF0EGHft0jkDit2pfKHfooHyRYLR6pOyjLzWunLbz29Xm0Lb2bLCKACYGnQm44QUPkLeO+x2j/BBl9cwLTYyIzlUxFHgcOS3qlxthAbie5imgiyCr3lRUF3JcKXpYZfKox/WMK0TqFWJY6hyUT8dB7SW27CvLFq+duB2N1RwOrvpR1xxp+VM0LbygSLY9u54Rr1JVfgjocHEjvMIL9XKnex99QlQ7ydWvlDon1Orw75qMvmwm2QOpMC+FhvPv0X9DjAu+yJgx1MUQ4qmCyhmBTkFk68RqgSbLeBfVYVROYTRPMIC95vPHWJUtHaUyFTDv3 root@node-0004
各节点执行:ssh node-0001~node-0004,选择yes后,确保能够无密码跳转到目标节点。
2.1.2 确认JDK是否安装
步骤 1 确认是否已安装JDK
各节点执行命令:
java -version
若输出如下结果,则ECS已安装JDK,无需执行OpenJDK安装操作。
openjdk version “1.8.0_232”
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
若无则参考附录4.1安装OpenJDK。
2.2 搭建Hadoop集群
2.2.1 搭建Hadoop集群
步骤 1 创建目录
各节点执行:
mkdir -p /home/modules/data/buf
mkdir -p /home/nm/localdir
步骤 2 登录node-0001节点,解压hadoop安装包
cd /root
cp hadoop-2.8.3.tar.gz /home/modules/
cd /home/modules/
tar -zxvf hadoop-2.8.3.tar.gz
步骤 3 配置hadoop core-site.xml配置文件
node-0001节点执行下列命令:
vim /home/modules/hadoop-2.8.3/etc/hadoop/core-site.xml
其中obs参数为:
Access Key Id:ZARNN4R93KSQFHJCDP0K
Secret Access Key:PBU44Ohke8fS4cF0pIox9ntO4oTP1RYJvngwMebM
endpoint:obs.cn-north-4.myhuaweicloud.com
参数配置如下:
<configuration>
<property>
<name>fs.obs.readahead.inputstream.enabled</name>
<value>true</value>
</property>
<property>
<name>fs.obs.buffer.max.range</name>
<value>6291456</value>
</property>
<property>
<name>fs.obs.buffer.part.size</name>
<value>2097152</value>
</property>
<property>
<name>fs.obs.threads.read.core</name>
<value>500</value>
</property>
<property>
<name>fs.obs.threads.read.max</name>
<value>1000</value>
</property>
<property>
<name>fs.obs.write.buffer.size</name>
<value>8192</value>
</property>
<property>
<name>fs.obs.read.buffer.size</name>
<value>8192</value>
</property>
<property>
<name>fs.obs.connection.maximum</name>
<value>1000</value>
</property>
***<property>\***
***<name>fs.defaultFS</name>\***
***<value>hdfs://node-0001:8020</value>\***
***</property>\***
<property>
<name>hadoop.tmp.dir</name>
<value>/home/modules/hadoop-2.8.3/tmp</value>
</property>
***<property>\***
***<name>fs.obs.access.key</name>\***
***<value>ZARNN4R93KSQFHJCDP0K</value>\***
***</property>\***
***<property>\***
***<name>fs.obs.secret.key</name>\***
***<value>PBU44Ohke8fS4cF0pIox9ntO4oTP1RYJvngwMebM</value>\***
***</property>\***
***<property>\***
***<name>fs.obs.endpoint</name>\***
***<value>obs.cn-north-4.myhuaweicloud.com:5080</value>\***
***</property>\***
<property>
<name>fs.obs.buffer.dir</name>
<value>/home/modules/data/buf</value>
</property>
<property>
<name>fs.obs.impl</name>
<value>org.apache.hadoop.fs.obs.OBSFileSystem</value>
</property>
<property>
<name>fs.obs.connection.ssl.enabled</name>
<value>false</value>
</property>
<property>
<name>fs.obs.fast.upload</name>
<value>true</value>
</property>
<property>
<name>fs.obs.socket.send.buffer</name>
<value>65536</value>
</property>
<property>
<name>fs.obs.socket.recv.buffer</name>
<value>65536</value>
</property>
<property>
<name>fs.obs.max.total.tasks</name>
<value>20</value>
</property>
<property>
<name>fs.obs.threads.max</name>
<value>20</value>
</property>
</configuration>
注:fs.obs.access.key、fs.obs.secret.key、fs.obs.endpoint、fs.defaultFS需根据实际情况修改。
步骤 4 配置hdfs-site.xml
node-0001节点执行下列命令:
vim /home/modules/hadoop-2.8.3/etc/hadoop/hdfs-site.xml
参数配置如下:
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
***<property>\***
***<name>dfs.namenode.secondary.http-address</name>\***
***<value>node-0001:50090</value>\***
***</property>\***
***<property>\***
***<name>dfs.namenode.secondary.https-address</name>\***
***<value>node-0001:50091</value>\***
***</property>\***
</configuration>
注:主机名node-0001需要根据实际替换。
步骤 5 配置yarn-site.xml
node-0001节点执行下列命令:
vim /home/modules/hadoop-2.8.3/etc/hadoop/yarn-site.xml
参数配置如下:
<configuration>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/home/nm/localdir</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>28672</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>3072</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>28672</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>38</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-vcores</name>
<value>38</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
***<property>\***
***<name>yarn.resourcemanager.hostname</name>\***
***<value>node-0001</value>\***
***</property>\***
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
<description>Whether virtual memory limits will be enforced for containers</description>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>4</value>
<description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>
</property>
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
***<property>\***
***<name>yarn.log.server.url</name>\***
***<value>http://node-0001:19888/jobhistory/logs</value>\***
***</property>\***
</configuration>
注:主机名node-0001需要根据实际情况修改。
步骤 6 配置mapred-site.xml
node-0001节点执行下列命令:
cd /home/modules/hadoop-2.8.3/etc/hadoop/
mv mapred-site.xml.template mapred-site.xml
vim /home/modules/hadoop-2.8.3/etc/hadoop/mapred-site.xml
参数配置如下:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
***<property>\***
***<name>mapreduce.jobhistory.address</name>\***
***<value>node-0001:10020</value>\***
***</property>\***
***<property>\***
***<name>mapreduce.jobhistory.webapp.address</name>\***
***<value>node-0001:19888</value>\***
***</property>\***
<property>
<name>mapred.task.timeout</name>
<value>1800000</value>
</property>
</configuration>
注:主机名node-0001需要根据实际情况修改。
步骤 7 配置slaves
node-0001节点执行下列命令:
vim /home/modules/hadoop-2.8.3/etc/hadoop/slaves
删除原有内容,添加内容如下:
node-0002
node-0003
node-0004
步骤 8 配置hadoop环境变量
node-0001节点执行下列命令::
vim /home/modules/hadoop-2.8.3/etc/hadoop/hadoop-env.sh
添加如下内容:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.aarch64
参考如下:
步骤 9 配置jar包
node-0001节点执行下列命令:
cd /root
cp hadoop-huaweicloud-2.8.3-hw-39.jar /home/modules/hadoop-2.8.3/share/hadoop/common/lib/
cp hadoop-huaweicloud-2.8.3-hw-39.jar /home/modules/hadoop-2.8.3/share/hadoop/tools/lib
cp hadoop-huaweicloud-2.8.3-hw-39.jar /home/modules/hadoop-2.8.3/share/hadoop/httpfs/tomcat/webapps/webhdfs/WEB-INF/lib/
cp hadoop-huaweicloud-2.8.3-hw-39.jar /home/modules/hadoop-2.8.3/share/hadoop/hdfs/lib/
步骤 10 分发hadoop包到各节点
node-0001下执行下列命令:
分发hadoop包到node2
scp -r /home/modules/hadoop-2.8.3/ root@node-0002:/home/modules/
分发hadoop包到node3
scp -r /home/modules/hadoop-2.8.3/ root@node-0003:/home/modules/
分发hadoop包到node4
scp -r /home/modules/hadoop-2.8.3/ root@node-0004:/home/modules/
步骤 11 配置环境变量
各节点执行:
vim /etc/profile
在文件尾部添加如下内容:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.aarch64
export HADOOP_HOME=/home/modules/hadoop-2.8.3
export PATH=$JAVA_HOME/bin:$PATH
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HADOOP_CLASSPATH=/home/modules/hadoop-2.8.3/share/hadoop/tools/lib/*:$HADOOP_CLASSPATH
注意“=”两边没有空格。
各节点执行:
source /etc/profile
步骤 12 namenode初始化
node-0001节点执行namenode初始化
执行下列命令:
hdfs namenode -format
初始化成功后,启动hdfs。
步骤 13 启动HDFS
node-0001节点执行
步骤 14 执行hdfs命令
[root@node-0001 hadoop]# hdfs dfs -mkdir /bigdata
2.2.2 测试与OBS互联
步骤 1 在OBS上传文件
进入OBS桶,选择“对象”上传文件
OBS文件上传成功
步骤 2 执行hdfs命令查看OBS文件
[root@node-0001 hadoop]# hdfs dfs -ls obs://bigdatapro-obs/
Hadoop集群与OBS互联成功。
注:命令参数“bigdatapro-obs”需要根据实际情况修改,该参数为桶名。
3.1 理论性能分析与实验结果分析
3.1.1 Hadoop基本介绍
Hadoop集群是一种分布式计算平台,具有良好的可扩展性和容错性,可以处理大规模数据的计算和分析任务。Hadoop集群采用HDFS分布式文件系统存储数据,具有高容错性和可扩展性。存储复杂度主要取决于数据的大小、副本数和存储位置等因素,对于大规模数据的存储,Hadoop集群可以提供较高的存储效率和可靠性。Hadoop集群中各个节点之间需要进行网络通信,包括数据传输和任务调度等。网络通信复杂度主要取决于节点数量、数据大小和网络带宽等因素,对于大规模数据的处理,Hadoop集群需要具备较高的网络通信能力和带宽。
3.1.2 华为OBS相关技术探讨
OBS(Object Storage Service)是华为云提供的一种对象存储服务,可以存储和访问大规模非结构化数据,具有高可靠性、高可用性和高扩展性。OBS互联是指将Hadoop集群和OBS服务互相连接,实现对OBS存储数据的读取和写入。其原理如下:
Hadoop集群与OBS服务通过网络连接,可以使用OBS提供的API进行访问和操作。
在Hadoop集群中,可以通过配置core-site.xml和hdfs-site.xml等文件,将OBS作为一个HDFS文件系统的挂载点,实现对OBS存储数据的读取和写入。
在Hadoop集群中,可以使用OBS提供的obs://协议,表示对OBS存储数据的访问路径,例如obs://obs-bucket/test.txt。
在Hadoop集群中,可以使用Hadoop命令行工具或Java API进行对OBS存储数据的操作,例如上传、下载、删除等操作。
4.1 实验总结
在本次实验中,成功地搭建了Hadoop集群,并将其与华为云OBS服务互联,实现了对OBS存储数据的读取。在实验过程中,掌握了Hadoop的MapReduce编程模型和HDFS分布式文件系统的基本原理,为后续的大规模数据处理和分析提供了基础知识和实践经验。 通过本次实验,还发现了一些问题。例如,在搭建Hadoop集群时,遇到了一些配置过程中的问题,需要进行调试和优化,例如多个节点配置同步的问题。综上所述,本次实验结果表明,本次实验成功地搭建了Hadoop集群,并掌握了相关技术和知识。同时,也发现了一些问题和优化点,为后续的实践和探索提供了参考和借鉴。通过本次实验,不仅提高了对Hadoop集群的理论认识,还掌握了实际搭建和配置的方法,为后续的大规模数据处理和分析提供了基础知识和实践经验。
- 点赞
- 收藏
- 关注作者
评论(0)