本文目录导读:
图片来源于网络,如有侵权联系删除
《Hadoop分布式集群搭建全攻略》
环境准备
1、硬件要求
- 至少需要三台服务器(为了体现分布式特性,实际生产环境可能更多),每台服务器应具备足够的内存、CPU和磁盘空间,内存建议至少8GB,磁盘空间根据存储的数据量而定,CPU至少为四核。
2、操作系统选择与安装
- 推荐使用Linux系统,如CentOS或Ubuntu,这里以CentOS 7为例,在每台服务器上安装CentOS 7操作系统,确保网络连接正常,可以互相ping通。
3、软件安装前的系统配置
关闭防火墙:执行命令systemctl stop firewalld
关闭防火墙服务,然后执行systemctl disable firewalld
禁止防火墙开机自启,这是为了确保Hadoop集群内部节点之间以及与外部客户端之间的通信不受防火墙的限制。
设置主机名:在每台服务器上分别设置不同的主机名,例如node1
、node2
、node3
,可以通过编辑/etc/hostname
文件来修改主机名,修改后重启服务器使设置生效。
配置hosts文件:在每台服务器的/etc/hosts
文件中添加集群中所有节点的IP地址和主机名映射关系。
```
192.168.1.101 node1
192.168.1.102 node2
192.168.1.103 node3
```
安装JDK:Hadoop运行需要Java环境支持,从Oracle官网下载适合CentOS 7的JDK版本,如JDK 8,将下载的JDK安装包上传到服务器,解压到指定目录,例如/usr/java
,然后设置JAVA_HOME
环境变量,在/etc/profile
文件中添加以下内容:
```
export JAVA_HOME = /usr/java/jdk1.8.0_xxx
export PATH = $JAVA_HOME/bin:$PATH
export CLASSPATH =.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
```
执行source /etc/profile
使环境变量生效。
Hadoop安装与配置
1、下载与解压Hadoop
- 从Hadoop官方网站下载稳定版本的Hadoop,如Hadoop 3.x,将下载的压缩包上传到集群中的主节点(例如node1
),然后解压到指定目录,如/usr/local/hadoop
。
2、Hadoop核心配置文件修改
hadoop - env.sh:编辑hadoop - env.sh
文件(位于/usr/local/hadoop/etc/hadoop
目录下),设置JAVA_HOME
环境变量,确保Hadoop能够找到Java运行环境。
```
export JAVA_HOME = /usr/java/jdk1.8.0_xxx
```
core - site.xml:该文件用于定义Hadoop的核心配置,添加以下配置内容:
```xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<property>
图片来源于网络,如有侵权联系删除
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
```
这里设置了默认的文件系统为hdfs
,主节点为node1
,端口为9000
,同时指定了Hadoop的临时目录。
hdfs - site.xml:主要用于HDFS(Hadoop分布式文件系统)的配置,配置内容如下:
```xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/hdfs/datanode</value>
</property>
</configuration>
```
其中dfs.replication
表示数据块的副本数量,这里设置为3,因为有三个节点。dfs.namenode.name.dir
和dfs.datanode.data.dir
分别指定了NameNode和DataNode的数据存储目录。
mapred - site.xml:对于MapReduce任务的配置,从模板文件mapred - site.xml.template
复制得到mapred - site.xml
,然后编辑添加以下内容:
```xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
```
这里设置MapReduce框架使用YARN。
yarn - site.xml:YARN(Yet Another Resource Negotiator)的配置文件,添加以下配置:
```xml
图片来源于网络,如有侵权联系删除
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<property>
<name>yarn.nodemanager.aux - services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
```
这里指定了YARN的资源管理器运行在node1
节点上。
集群部署
1、将Hadoop分发到其他节点
- 在主节点(node1
)上,使用scp
命令将整个/usr/local/hadoop
目录分发到其他节点(node2
和node3
)。
```
scp -r /usr/local/hadoop node2:/usr/local/
scp -r /usr/local/hadoop node3:/usr/local/
```
2、格式化NameNode
- 在主节点(node1
)上,进入/usr/local/hadoop/bin
目录,执行hdfs namenode - format
命令,这一步操作会初始化HDFS的文件系统,创建相关的目录结构等,需要注意的是,此命令只能在集群初次搭建或者需要重新格式化时执行,因为格式化会删除已有的数据。
启动与测试集群
1、启动集群服务
- 在主节点(node1
)上,执行以下命令启动Hadoop集群的所有服务:
```
start - all.sh
```
这个命令会依次启动HDFS的NameNode、DataNode,YARN的ResourceManager和NodeManager等服务。
2、查看集群状态
- 通过jps
命令在每个节点上查看相关的进程是否启动成功,在主节点(node1
)上应该能看到NameNode
、ResourceManager
等进程,在从节点(node2
和node3
)上应该能看到DataNode
、NodeManager
等进程。
- 也可以通过Hadoop的Web界面查看集群状态,通过http://node1:50070
可以查看HDFS的管理界面,通过http://node1:8088
可以查看YARN的管理界面,在HDFS管理界面中,可以查看文件系统的使用情况、DataNode的状态等信息;在YARN管理界面中,可以查看正在运行的任务、资源使用情况等。
3、简单测试
- 可以使用Hadoop自带的示例程序进行简单测试,运行一个WordCount示例程序,首先创建一个测试文件,然后将文件上传到HDFS,再执行WordCount程序。
- 创建测试文件:在本地创建一个包含一些文本内容的文件,例如test.txt
。
- 上传文件到HDFS:在主节点上执行hdfs dfs - put test.txt /
命令,将test.txt
文件上传到HDFS的根目录下。
- 执行WordCount程序:执行hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop - mapreduce - examples - 3.x.x.jar wordcount /test.txt /output
命令,这里的/test.txt
是输入文件在HDFS中的路径,/output
是输出结果在HDFS中的保存路径,执行完命令后,可以通过hdfs dfs - cat /output/part - r - 00000
查看结果。
通过以上步骤,就可以成功搭建一个Hadoop分布式集群,并进行基本的测试,在实际应用中,还需要根据具体的业务需求对集群进行进一步的优化和管理。
评论列表