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

本次hadoop伪分布搭建环境:Windows10_64位+VMware9.0+Centos 6.4(32位)

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

============================================================node

内容以下:apache

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

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

3、安装hadoop框架

4、ssh免密登陆ssh

5、HDFS & MapReduce 运行测试工具

============================================================oop

1、安装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免密登陆

未完待续。。。。。