hadoop集群环境搭建

2023-05-16

目录

思路

配置master服务器

配置slave服务器

启动

运行example

常见报错

多次初始化导致master和slave的clusterID的不一致

INFO mapreduce.Job: Running job: job_1647679522593_0001

Got exception: java.net.ConnectException

其他报错

小好奇

思路

目标:一台master,两台slave。

新建两台虚拟机,一台master一台slave,先配置master ssh登录slave,之后在master上配置好jdk和Hadoop后直接通过scp传送到slave1,然后通过slave1虚拟机克隆产生slave2。

配置master服务器

1.设置SSH免密码登录

具体教程可见

ssh免密登录远程服务器

2.安装JDK

下载“jdk-8u11-linux-x64.tar.gz”,放到/home/java目录下,解压

tar -zxvf jdk-8u11-linux-x64.tar.gz

在/etc/profile文件后面添加

export JAVA_HOME=/home/java/jdk1.8.0_11
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export PATH=$PATH:${JAVA_HOME}/bin:${JRE_HOME}/bin

一定记得输入命令

source /etc/profile

测试是否成功安装

java -version

3.安装hadoop-2.6.5

下载“hadoop-2.6.5.tar.gz”,放到/home/hadoop目录下,解压

tar -xzvf hadoop-2.6.5.tar.gz

在/home/hadoop目录下创建数据存放的文件夹,tmp、hdfs、hdfs/data、hdfs/name

4.添加java和hadoop环境变量

打开/root下的.bashrc文件,添加三行

export HADOOP_HOME=/home/hadoop/hadoop-2.6.5
export JAVA_HOME=/home/java/jdk1.8.0_11
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

这里注意三点:

一是要在对应用户下修改对应用户的.bashrc。由于我是在root用户下操作,修改的是root的.bashrc,所以我在普通用户下输入hadoop会显示command not found。

二是PATH要在最下面,否则引用不了HADOOP_HOME和JAVA_HOME。

三是记得

source /root/.bashrc

5.修改配置文件

配置/home/hadoop/hadoop-2.6.5/etc/hadoop目录下的core-site.xml

需要修改第四行ip

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://192.168.79.128:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/home/hadoop/tmp</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131702</value>
    </property>
 </configuration>

配置/home/hadoop/hadoop-2.7.0/etc/hadoop目录下的hdfs-site.xml

需要修改倒数第七行ip

<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/hadoop/hdfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/hadoop/hdfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>192.168.79.128:9001</value>
    </property>
    <property>
		    <name>dfs.webhdfs.enabled</name>
		    <value>true</value>
    </property>
 </configuration>

配置/home/hadoop/hadoop-2.7.0/etc/hadoop目录下的mapred-site.xml

修改两行value的ip

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>192.168.79.128:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>192.168.79.128:19888</value>
    </property>
 </configuration>

配置/home/hadoop/hadoop-2.7.0/etc/hadoop目录下的yarn-site.xml

修改好多ip

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>192.168.79.128:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>192.168.79.128:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>192.168.79.128:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>192.168.79.128:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>192.168.79.128:8088</value>
    </property>
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>6144</value>
    </property>
    <property>
	      <name>yarn.scheduler.minimum-allocation-mb</name>
	      <value>2048</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-pmem-ratio</name>
	      <value>2.1</value>
    </property>
</configuration>

配置/home/hadoop/hadoop-2.6.5/etc/hadoop目录下hadoop-env.sh、yarn-env.sh

export JAVA_HOME=/home/java/jdk1.8.0_11

配置/home/hadoop/hadoop-2.6.5/etc/hadoop目录下的slaves,删除默认的localhost,增加2行

192.168.79.138
192.168.79.143

(这一步要等到创建slave2后,知道slave2的ip再回来填,到时候记得就好)

6.将jdk和hadoop传给slave

scp -r /home/java 192.168.79.138:/home/
scp -r /home/hadoop 192.168.79.138:/home/

(如果上一步ssh配置好的话,这一步是不需要密码的)

配置slave服务器

1.配置slave1

java配置同master服务器,只需要修改/etc/profile并且source一下就可以了。

hadoop配置传送过来就好了,不要修改hadoop下的配置文件,master和slave的这些配置文件需要一毛一样。

添加java和hadoop环境变量,同master,可参考master的配置。

2.克隆产生slave2

选择 创建完整克隆

(如果之前没有额外的虚拟机的话,选择克隆会比新建一个虚拟机快一些,而且不会出错。如果之前有的话,通过scp传送java和Hadoop也很快)

试一下用master能不能ssh登录,再试一下java -version,如果都可以的话说明克隆成功了

3.配置master上/home/hadoop/hadoop-2.6.5/etc/hadoop目录下的slaves,把之前那一步做完

启动

1.启动

在master上,输入

hdfs namenode -format

这里一定要注意,初始化一次就够了,不要多次初始化,重启hdfs的时候不需要再次初始化,如果已经多次初始化,参考常见报错第一个。

一般提示Exiting with status 0表示成功

start-all.sh

2.查看

在master和slave上分别输入jps,显示已运行的java程序

也可以用浏览器打开管理页面http://192.168.79.128:50070/ ,查看节点信息

打开http://192.168.79.128:8088/ ,查看节点运行情况

3.关闭所有节点

stop-all.sh

运行example

  • 算圆周率
hadoop jar /home/hadoop/hadoop-2.6.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar pi 10 10

没有报错并正确显示计算结果,表明运行成功

  • 统计单词个数

先创建input文件夹,再上传文件至input目录下,输入以下命令,统计结果会放到output里

hadoop jar /home/hadoop/hadoop-2.6.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /input /output

可在管理页面找到output,下载统计结果

 

常见报错

多次初始化导致master和slave的clusterID的不一致

使得slave节点无法启动datanode。

如果已经多次初始化,按如下步骤恢复。

首先

stop-all.sh

再删除core-site.xml和hdfs-site.xml指定路径下所有的文件和文件夹,但一定要保留他们指定的文件夹。

比如我最后的结果是这样的

所有slave中data下的文件和tmp下的文件都要删除,最后状态应该和master一样。

现在可以初始化了

hdfs namenode -format

在master上打开/home/hadoop/hdfs/name/current/VERSION,再在slave上打开/home/hadoop/hdfs/data/current/VERSION,如果发现两者clusterID一致的话,说明初始化成功了。

以后记得不要多次初始化了噢~

INFO mapreduce.Job: Running job: job_1647679522593_0001

运行example时卡在这行不动了,可参考

hadoop yarn方式执行mapreducejob一致peding,卡住不动_如何在5年薪百万的博客-CSDN博客

Hadoop运行任务时一直卡在: INFO mapreduce.Job: Running job_Oooover的博客-CSDN博客_hadoop卡在runningjob

但我当时的问题是hostname配置不对,跟第二个报错是一样的,这里解释了问题原因

Hadoop java Got exception: java.net.ConnectException

Got exception: java.net.ConnectException

根本原因是hosts和hostname配置不对,修改一下配置再重启虚拟机就好了。记得master和slave都要修改设置。

以下是我的配置:

/etc/hosts(slave同master)

127.0.0.1	localhost localhost.localdomain localhost4 localhost4.localdomain4
#127.0.1.1	ubuntu

192.168.79.128	meta1
192.168.79.138	meta2
192.168.79.143	meta3

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback localhost localhost.localdomain localhost4 localhost4.localdomain4
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

/etc/hostname,每个服务器写自己的名称就好,修改之后重启虚拟机才生效,然后输入命令查看是否生效。

hostname

我的报错和这里的几乎一样,他的解决方法很有效,可参考。

Hadoop java Got exception: java.net.ConnectException

其他报错

参考这里。

Linux报错集锦

小好奇

上传文件的时候,究竟上传到哪里了呢~

用find查找整个系统,发现找不到,最后在从节点的这个目录下找到文件

/home/hadoop/dfs/data/current/BP-1615665570-127.0.1.1-1647576217136/current/finalized/subdir0/subdir0

原文链接(会有更新)

Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.A new tool that blends your everyday work apps into one. It's the all-in-one workspace for you and your teamhttps://thrilling-coffee-afc.notion.site/hadoop-cb4c19c3494d4d22af3ba74c166a5826

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hadoop集群环境搭建 的相关文章

随机推荐