您的位置:首页 > 运维架构

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

2018-01-19 13:45 651 查看
本次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

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



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

解压完成可以查看相应的文件夹内容如下:
bin:包含一些可执行的脚本文件
etc:包含一些配置文件
include和lib:包含一些本地库文件
sbin:系统相关的脚本文件,包括启动和停止等

share:jar包相关的文件



可以打开share文件夹查看一下
common:包含一些公共组件和模块
hdfs:包含hdfs相关的组件
httpfs:包含一些通过http协议上传文件的相关组件

sbin:系统相关的脚本文件,包括启动和停止等

mapreduce:包含mapreduce相关的组件

tools:工具包

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



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

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



(1)环境变量配置

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



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



(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>





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

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

<configuration>
<property>
<name>dfs.replication</name> #设置数据副本数,一般为3最合适
<value>1</value> #因为本次是伪分布,所以只能是1,否则报错,原因是没有其他节点可供数据存储
</property>
</configuration>



(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>




(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>




(6)关闭系统防火墙

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

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

关闭防火墙:sudo service iptables stop



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



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

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

可以在hadoop安装目录下的bin文件夹下找到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




更改之后记得运行source /etc/profile使更改生效,这样我们就可以在任何地方启动hadoop了


第一次启动需要初始化
使用命令 hadoop namenode -format





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



(1)启动hdfs

命令 start-hdfs.sh



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



这里面有一个默认值localhost,启动时就去读取这个文件
vi slaves 打开,



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



(2)启动yarn

命令start-yarn.sh



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



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

未完待续。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息