欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

hadoop学习笔记之hadoop伪分布集群搭建(三)

程序员文章站 2022-07-14 15:43:14
...
本次hadoop伪分布搭建环境:Windows10_64位+VMware9.0+Centos 6.4(32位)

默认以上环境已经配置好,下面开始进行hadoop伪分布集群安装......

============================================================

内容如下:

一、给主机服务器(Centos 6.4)配置IP地址

二、安装jdk,并配置环境变量

三、安装hadoop

四、ssh免密登录

五、HDFS & MapReduce 运行测试

============================================================

一、安装hadoop

首先去hadoop官网下载相应的hadoop安装包,这里我们使用的是版本是hadoop-2.4.1

下载好以后,将安装包上传到服务器

hadoop学习笔记之hadoop伪分布集群搭建(三)

然后解压安装到之前建的app文件夹中  tar -zxvf hadoop-2.4.1.tar.gz -C app/

解压完成可以查看相应的文件夹内容如下:

bin:包含一些可执行的脚本文件
etc:包含一些配置文件
include和lib:包含一些本地库文件
sbin:系统相关的脚本文件,包括启动和停止等

share:jar包相关的文件

hadoop学习笔记之hadoop伪分布集群搭建(三)

可以打开share文件夹查看一下

common:包含一些公共组件和模块
hdfs:包含hdfs相关的组件
httpfs:包含一些通过http协议上传文件的相关组件
sbin:系统相关的脚本文件,包括启动和停止等
mapreduce:包含mapreduce相关的组件
tools:工具包

yarn:包含yarn框架相关的组件

hadoop学习笔记之hadoop伪分布集群搭建(三)

此时想要运行hadoop,还需要进行一些配置

在etc/hadoop/下包含了一些配置文件

hadoop学习笔记之hadoop伪分布集群搭建(三)

(1)环境变量配置

下面进行修改环境变量配置,hadoop启动时需要获得jdk环境,修改的目的是将路径写死,防止获取路径失败
使用命令vi hadoop-env.sh, 将=${JAVA_HOME}修改为自己的jdk安装目录(绝对路径)
我这里的jdk解压到了/home/hadoop/app/jdk1.7.0_65
hadoop学习笔记之hadoop伪分布集群搭建(三)

如果不记得JAVA_HOME的路径,可以使用命令 echo $JAVA_HOME获得,该命令是获得系统中变量名为JAVA_HOME的值(JAVA_HOME在安装jdk的时候配置过)

hadoop学习笔记之hadoop伪分布集群搭建(三)

(2)配置core-site.xml文件

vi core-site.xml  添加两个变量,如下
<configuration>
  <property>
    <name>fs.defaultFS</name>    #配置默认文件系统
    <value>hdfs://work01:9000/</value>    #提供主节点机器名字,默认端口号为9000
  </property>

  <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hadoop/app/hadoop-2.4.1/data/</value>   #配置数据存放目录
  </property>

</configuration>

hadoop学习笔记之hadoop伪分布集群搭建(三)

(3)配置hdfs-site.xml文件

vi hdfs-site.xml  添加一个变量,如下

<configuration>
  <property>
    <name>dfs.replication</name>   #设置数据副本数,一般为3最合适
    <value>1</value>  #因为本次是伪分布,所以只能是1,否则报错,原因是没有其他节点可供数据存储
  </property>
</configuration>
hadoop学习笔记之hadoop伪分布集群搭建(三)
(4)配置mapred-site.xml

默认安装文件路径下只有mapred-site.xml.template文件,MapReduce不会去读这个文件,因此需要我们把这个文件改一下名字,使用命令 mv mapred-site.cml.template mapred-site.xml 即可
然后使用vi mapred-site.xml 添加一个变量如下:
<configuration>
  <property>
    <name>mapreduce.framework.name</name>    
    <value>yarn</value>
  </property>
</configuration>
hadoop学习笔记之hadoop伪分布集群搭建(三)

(5)配置yarn-site.xml文件

vi yarn-site.xml  添加两个变量如下

<configuration>
  <property>
    <name>yarn.resourcemanager.hostname</name>  
    <value>work01</value>
  </property>

  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value> 
  </property>

</configuration>
hadoop学习笔记之hadoop伪分布集群搭建(三)

(6)关闭系统防火墙

因为运行hadoop需要开启某些端口,系统防火墙默认是将其关闭的,为了不一个一个找出端口并打开,所以直接关掉防火墙就可以了

查看防火墙状态:  sudo service iptables status

关闭防火墙:sudo service iptables stop

hadoop学习笔记之hadoop伪分布集群搭建(三)

以上这种方式只能关闭一次防火墙,下次系统启动的时候还是会开启,因为防火墙默认是自启动的,因此还需要将自启动防火墙关闭

hadoop学习笔记之hadoop伪分布集群搭建(三)

========================================================

经过以上这些配置之后,就可以启动hadoop了

可以在hadoop安装目录下的bin文件夹下找到hadoop运行启动hadoop学习笔记之hadoop伪分布集群搭建(三)

也可以直接使用hadoop命令运行启动,为了以后能够方便的直接使用hadoop命令启动,我们需要将hadoop的bin路径添加到环境变量中
sudo vi /etc/profile   添加如下内容:
export HADOOP_HOME=/home/hadoop/app/hadoop-2.4.1
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

hadoop学习笔记之hadoop伪分布集群搭建(三)
更改之后记得运行source /etc/profile使更改生效,这样我们就可以在任何地方启动hadoop了hadoop学习笔记之hadoop伪分布集群搭建(三)

第一次启动需要初始化
使用命令 hadoop namenode -format
hadoop学习笔记之hadoop伪分布集群搭建(三)

hadoop学习笔记之hadoop伪分布集群搭建(三)

可以看出,初始化就是在data文件夹下建立了一些子文件夹和文件等

hadoop学习笔记之hadoop伪分布集群搭建(三)

(1)启动hdfs

命令 start-hdfs.sh

hadoop学习笔记之hadoop伪分布集群搭建(三)

注意到有两个问题(疑问):
(1)每次启动一个进程都需要远程登录,输入密码,可是我们登录的是本地的机器啊,为什么还需要密码呢?
(2)对于DataNode,对应的机器名称是localhost,但是我们之前没有设置DataNode,只是设置了NameNode,它怎么知道是哪个机器呢?
首先对于第(2)个问题,一定是某个地方设置了DataNode的对应的机器名称,否则怎么可能去找呢??
其实在hadoop安装路径的配置文件中有一个slaves的文件,这里面就是设置哪些机器是DataNode
hadoop学习笔记之hadoop伪分布集群搭建(三)

这里面有一个默认值localhost,启动时就去读取这个文件
vi slaves 打开,
hadoop学习笔记之hadoop伪分布集群搭建(三)

可以进行修改,设置指定的DataNode机器名,本次就只有一个work01

hadoop学习笔记之hadoop伪分布集群搭建(三)

(2)启动yarn

命令start-yarn.sh

hadoop学习笔记之hadoop伪分布集群搭建(三)

这里resourcemanager 我们之前设置过,而 nodemanager同样会去读取slaves文件,刚才我们设置过为work01,所以这次就是work01

hadoop学习笔记之hadoop伪分布集群搭建(三)

这里可以看到所有的相关进程都已经启动
--------------------------------------------------------------------------------------------------------------
总结:可以发现,hdfs和yarn集群启动时只需要在一台机器上运行start-dfs.sh和start-yarn.sh就可以,它可以自动远程登录其他节点帮我们启动,但是这里有一个问题,就是我们每次远程登录启动的时候都需要输入密码,一台机器或者数量少的我们还可以手动输入,但是如果是1000台甚至上万台,这个方法肯定是不行了(因为耗费时间,而且时间一长,某些进程就会停止,最后导致启动失败),那怎么办呢?可以使用ssh免密登录

未完待续。。。。。