hadoop集群搭建

部署运行你感兴趣的模型镜像

hadoop集群的搭建

传送门:本地虚拟机集群的搭建:https://blog.youkuaiyun.com/gg_xiajie/article/details/118061715

一、JDK安装

hadoop集群需要jdk的支持,本次以jdk1.8为例,有多种安装方式,最简单的为yum一键安装

yum install ****

此次安装选择手动安装的方式

1、首先下载jdk包

官网地址:

https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

下载图中标记的Linux x64 Compressed Archive,不要下错了

image-20210620143814305

2、上传到liunx

我这里使用的是SecureCRT+FX 8.7组合进行远程操作,你也可以用xftp或者本地文件共享的形式上传

SecureCRT+FX 8.7下载地址:https://download.youkuaiyun.com/download/gg_xiajie/19738466

内有注册方法

我是上传到 /usr/local/lib64目录,具体自定义,一般在/usr/local下

3、解压文件

使用tar命令解压

tar -zxvf jdk-8u291-linux-x64.tar.gz
为了方便,我重新命名了一下
mv jdk-8u291-linux-x64/ jdk8
删除压缩包
rm jdk-8u291-linux-x64.tar.gz

4、配置环境变量

vi /etc/profile
在文件尾部追加
export JAVA_HOME=/usr/local/lib64/jdk8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=${PATH}:${JAVA_PATH}

配置完成如下图所示:

image-20210620144433632

wq保存,然后刷新环境变量,让其立即生效

source /etc/profile

测试安装是否成功

java -version
javac

运行结果如下:

image-20210620144631524

至此,jdk安装完毕,其余机器操作相同

这里说一个小技巧,只需要在其他机器上执行第四步就可以了

在安装好的机器上执行下scp命令,将文件拷过去

命令格式:scp [filename] [username@ip:filepath]
文件夹的话需要带上 -r 指令,如下所示(ps:我是配了host,所以用hadoop02代替了192.168.0.102)
scp -r jdk8/ root@hadoop02:/usr/local/lib64/
二、hadoop安装

1、安装前置环境:

由于开始选择的是最小安装,需要安装下常用的环境

Extra Packages for Enterprise Linux 是为“红帽系”的操作系统提供额外的软件包,适用于 RHEL、CentOS 和 Scientific Linux。相当于是一个软件仓库,大多数 rpm 包在官方repository 中是找不到的)

yum install -y epel-release

工具包集合,包含 ifconfig 等命令

yum install -y net-tools

vim:编辑器

yum install -y vim

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld.service

2、安装hadoop

与jdk相同,都是拆箱及用

选用的版本是相对比较新的3.1.3,官网地址:

https://hadoop.apache.org/release/3.1.3.html

下载完之后上传到liunx,上传一份就行,其他机器安装完成之后拷贝即可

解压并重命名

tar -zxvf hadoop-3.1.3.tar.gz
mv hadoop-3.1.3 hadoop

3、配置环境变量

除了直接在系统文件里更改(vim /etc/profile)之外,还有另外一种形式

profile文件中有这么一行,便利所有/etc/profile.d/文件夹下的所有sh文件进行加载

for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null
        fi
    fi
done

我们可以自定义一个文件

cd /etc/profile.d/
vim my-env.sh

将下面的配置贴进去即可

export HADOOP_HOME=/usr/local/lib64/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

然后刷新一下环境变量

source /etc/profile

看下是否安装成功,注意没有**’-’**

hadoop version

image-20210620210137062

至此,第一台机器安装完成

4、拷贝到其他机器

通过scp命令拷贝到另外两台机器

# 命令介绍-r 代表递归,拷贝文件夹使用
scp -r [SourcePath] [targetUserName]@[host]:[targetPath]
# eg:拷贝到192.168.0.102上面
scp -r /usr/local/lib64/hadoop/ root@hadoop02:/usr/local/lib64/
# 拷贝到192.168.0.103上面
scp -r /usr/local/lib64/hadoop/ root@hadoop03:/usr/local/lib64/

5、配置免密ssh登录

ssh免密登录原理 ,在本地的允许访问目录中存放有对方的公钥,对方访问的时候就不需要密码了

# 创建密钥对
ssh-keygen -t rsa

创建完毕后可以在当前用户的目录下的.ssh文件夹中查看,.ssh为隐藏文件,使用ls -a展示隐藏文件

image-20210620222504802

# 查看私钥
cat /root/.ssh/id_rsa
# 查看公钥
cat /root/.ssh/id_rsa.pub

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

# 为了方便,当前机器也拷贝一份
ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03

拷贝完成后目标机器的.ssh出现 一个名为:authorized_keys的文件,这个文件中存放的就是允许无密访问的机器的公钥

image-20210620222857955

这个 时候使用hadoop01这台机器访问其他机器就不需要密码了

三、Hadoop的配置

1、集群部署规划

NameNode 和 SecondaryNameNode 不要安装在同一台服务器

ResourceManager 也很消耗内存,也不要和 NameNode、SecondaryNameNode 配置在同一台机器上

Hadoop01Hadoop02Hadoop03
HDFSNameNode、DataNodeDataNodeSecondaryNameNode 、DataNode
YARNNodeManagerResourceManager、NodeManagerNodeManager

2、配置集群

相关配置文件都在[filepath]/etc/hadoop下,我安装的是在/usr/local/lib64/hadoop/etc/hadoop

image-20210620224936041

(1)核心配置文件core-site.xml

<configuration>
	<!-- 指定 NameNode 的地址 -->
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://hadoop01:8020</value>
	</property>
	<!-- 指定 hadoop 数据的存储目录 -->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/usr/local/lib64/hadoop/data</value>
	</property>
	<!-- 配置 HDFS 网页登录使用的静态用户为 root -->
	<property>
		<name>hadoop.http.staticuser.user</name>
		<value>root</value>
	</property>
</configuration>

(2)HDFS 配置文件hdfs-site.xml

<configuration>
	<!-- nn web 端访问地址-->
	<property>
		<name>dfs.namenode.http-address</name>
		<value>hadoop01:9870</value>
	</property>
	<!-- 2nn web 端访问地址-->
	<property>
		<name>dfs.namenode.secondary.http-address</name>
		<value>hadoop03:9868</value>
	</property>
</configuration>

(3) YARN 配置文件yarn-site.xml

<configuration>
	<!-- 指定 MR 走 shuffle -->
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
	<!-- 指定 ResourceManager 的地址-->
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>hadoop02</value>
	</property>
	<!-- 环境变量的继承 注意value中不要有回车-->
	<property>
		<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
	</property>
</configuration>

(4)MapReduce 配置文件mapred-site.xml

	<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>

(5)配置workers

中间不要有空格,最后不要有空行

hadoop01
hadoop02
hadoop03

每个机器上都是使用相同的配置

四、启动集群

第一次启动需要进行初始化,在hadoop01上进行初始化,因为NameNodeManager在hadoop01上

注意:如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停 止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。

hdfs namenode -format

1、启动hdfs

在hadoop01启动hdfs,此命令在hadoop/sbin下,之前配置过环境变量,任意位置输入都可以

start-dfs.sh

启动完毕后可以打开可视化图形页面查看

# 在hdfs-site.xml中配置的地址
http://hadoop01:9870/

image-20210621220639301

2、启动yarn

在hadoop02上启动yarn,因为ResourceManager在hadoop02上,命令也在sbin下

start-yarn.sh

同样的,可视化页面在yarn-site.xml中配置了,默认端口为8088

http://hadoop02:8088/

image-20210621221152602

start-dfs.sh

启动完毕后可以打开可视化图形页面查看

# 在hdfs-site.xml中配置的地址
http://hadoop01:9870/

[外链图片转存中…(img-67E82zmX-1624284902964)]

2、启动yarn

在hadoop02上启动yarn,因为ResourceManager在hadoop02上,命令也在sbin下

start-yarn.sh

同样的,可视化页面在yarn-site.xml中配置了,默认端口为8088

http://hadoop02:8088/

[外链图片转存中…(img-DQR1U2Ls-1624284902966)]

至此,hadoop集群环境搭建完毕

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>好的,用户想了解如何搭建Hadoop集群的详细步骤和配置。首先,我需要回忆之前学过的Hadoop集群搭建知识,确保步骤正确。记得Hadoop集群通常分为完全分布式模式,需要多台机器,比如hadoop102、hadoop103、hadoop104这样的命名。用户提供的引用里提到了设置这些节点,并测试SSH连接,还有上传安装包。可能这些是关键的步骤。 接下来,我应该按照逻辑分步骤讲解。首先准备环境,包括服务器、Java安装、主机名和hosts文件的配置,以及SSH免密登录的设置。这些都是搭建集群的基础。然后,安装Hadoop,解压安装包,配置环境变量。接下来是核心的配置文件修改,比如hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml以及workers文件。每个配置文件的作用需要简要说明,比如core-site.xml设置NameNode地址,hdfs-site.xml配置副本数等。 配置完成后,需要同步到其他节点,这里可以用scp命令或者rsync。然后初始化HDFS,启动集群,最后验证是否成功,比如jps查看进程,或者访问Web界面。可能用户在实际操作中会遇到问题,比如SSH连接失败,端口占用,或者配置文件错误,这些常见问题应该提及解决方案。 另外,用户的问题可能涉及到具体的配置参数,比如副本数设置成多少合适,或者资源管理器的配置,这些需要根据集群规模给出建议。比如小型集群副本数可以设为2,但生产环境通常3。还有安全模式的问题,可能需要关闭防火墙或者配置SELinux。 需要确保所有的命令和路径都是正确的,比如JAVA_HOME的路径是否正确,Hadoop的安装目录是否一致。同时,用户可能需要知道如何验证集群是否正常工作,比如运行一个测试的MapReduce作业,或者检查日志文件。 最后,生成相关问题的时候,应该围绕用户可能进一步关心的问题,比如配置参数优化、添加节点、安全配置、性能调优等。这些能帮助用户更深入理解集群管理和维护。</think>### Hadoop集群搭建步骤详解 #### 一、环境准备(3节点示例) 1. **服务器规划** - hadoop102(NameNode + DataNode) - hadoop103(ResourceManager + DataNode) - hadoop104(SecondaryNameNode + DataNode) 2. **基础配置** - 所有节点安装JDK 8+并配置环境变量: ```bash export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 ``` - 配置主机名和/etc/hosts文件: ```bash 192.168.1.102 hadoop102 192.168.1.103 hadoop103 192.168.1.104 hadoop104 ``` - 配置SSH免密登录: ```bash ssh-keygen -t rsa ssh-copy-id hadoop102 ssh-copy-id hadoop103 ssh-copy-id hadoop104 ``` #### 二、Hadoop安装与配置 1. **解压安装包** ```bash tar -zxvf hadoop-3.3.6.tar.gz -C /opt/module/ ``` 2. **配置环境变量** ```bash export HADOOP_HOME=/opt/module/hadoop-3.3.6 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin ``` 3. **修改核心配置文件** - `etc/hadoop/hadoop-env.sh`: ```bash export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 ``` - `etc/hadoop/core-site.xml`: ```xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop102:8020</value> </property> </configuration> ``` - `etc/hadoop/hdfs-site.xml`: ```xml <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> </configuration> ``` #### 三、集群同步与启动 1. **分发配置到所有节点** ```bash scp -r /opt/module/hadoop-3.3.6 hadoop103:/opt/module/ scp -r /opt/module/hadoop-3.3.6 hadoop104:/opt/module/ ``` 2. **初始化HDFS** ```bash hdfs namenode -format ``` 3. **启动集群** ```bash start-dfs.sh # 启动HDFS start-yarn.sh # 启动YARN ``` #### 四、验证集群状态 1. **进程验证** ```bash jps # hadoop102应显示NameNode/DataNode # hadoop103应显示ResourceManager/NodeManager ``` 2. **Web界面验证** - HDFS状态:`http://hadoop102:9870` - YARN状态:`http://hadoop103:8088` #### 五、常见问题解决 1. **SSH连接失败** - 检查防火墙状态:`systemctl stop firewalld` - 验证公钥是否完整复制到`~/.ssh/authorized_keys` 2. **端口冲突** - 使用`netstat -tunlp | grep 8020`检查默认端口占用情况 3. **HDFS无法格式化** - 删除所有节点的`/tmp/hadoop-*`目录后重试[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值