Hadoop单机模式的配置与安装

Hadoop单机模式的配置与安装

版权所有

前言:

         由于Hadoop属于java程序,所以,安装Hadoop之前需要先安装jdk。

         对于hadoop0.20.2的单机模式安装就需要在一个节点(一台主机)上运行5个节点。

分别是:

         JobTracker:负责Hadoop的Job任务分发和管理。

         TaskTracker:负责在单个节点上执行MapReduce任务。

对于Hadoop里面的HDFS的节点又有

         NameNode:主节点,负责管理文件存储的名称节点

         DateNode:数据节点,负责具体的文件存储节点。

         由于HDFS中NameNode非常繁忙,容易产生故障。说以对于HDFS文件系统来说,需要一个节点随时给他复制编辑到名称节点NameNOde里面去。这样的一个类似于备份的节点叫做SecondaryNameNode。

所以对于Hadoop来说单机模式部署时

         JobTracker

         TaskTracker

         NameNode

         SecondaryNameNode

DateNode

这样的5个节点都只能安装在一台主机上。

很显然,在单机模式,里面数据如果自动做备份存储多份就没有意义。所以在单机模式和伪分布式模式里面数据只需要存储一份就可以了。但在完全分布式环境里面hadoop最少有三个节点(三台主机)。

完全分布式。最少要有三个节点(三台主机)

         一个节点用来做:NameNode和JobTracker

         一个节点用来做:SecondaryNameNode,随时用来编辑日志,完成向NameNode之间的合并。

         一个节点用来做:DateNode,存储数据。

虽然三个节点组成的Hadoop并不能算完全分布模式。但已经具备了hadoop的基本构架了。随时可以增加其他节点。因此可以实现工作的节点越多,其hadoop的调度越强大。为了Hadoop能正常运行,Hadoop为每一个进程默认启动了1G的内存,当然这并不影响我们在虚拟机上模式实现。这1G的内存只是它最大能用到的是1G的内存。所以在正在的Hadoop运行时,你必须要保证Hadoop的物理资源要足够才行。

 

Hadoop的单机模式安装。

一般来说Hadoop都是别人编译好的版本。直接解压缩,然后过去启动就行了。

本次安装Hadoop所需要的基本工具。

hadoop-0.20.2-cdh3u4.tar.gz

jdk-7u76-linux-x64.tar.gz

注意:Hadoop的版非常多,每种版本之间差异特别大,一般每个版本都会对应特定的Jdk版本。

 

第一步:解压安装包到指定位置

[root@gdy01gandian]# tar -xf jdk-7u76-linux-x64.tar.gz -C /usr/gd/

[root@gdy01gandian]# tar -xf hadoop-0.20.2-cdh3u4.tar.gz -C /usr/gd/


注意:这里的/usr/gd/目录为本人已经提前创建好的目录,当然,你也可以选择自己创建好的其他目录。不过如果这里的目录改变了,下面后来的配置信息也要随着改变。

第二步,进入目录查看文件

[root@gdy01gandian]# cd /usr/gd/

[root@gdy01 gd]#ll


第三步:为jdk和Hadoop创建连接文件。

[root@gdy01 gd]#ln -s jdk1.7.0_76 java

[root@gdy01 gd]#ln -s hadoop-0.20.2-cdh3u4 hadoop


第四步:在/etc/profile.d/目录下配置hadoop和Jdk的环境变量

先配置java的环境变量:

[root@gdy01 gd]#vim /etc/profile.d/java.sh


添加如下信息:

JAVA_HOME=/usr/gd/java

JAVA_BIN=$JAVA_HOME/bin

PATH=$JAVA_BIN:$PATH

export JAVA_HOMEJAVA_BIN PATH


wq保存退出。


配置hadoop的环境变量:

[root@gdy01 gd]#vim /etc/profile.d/hadoop.sh

添加如下信息:

HADOOP_HOME=/usr/gd/hadoop

PATH=$HADOOP_HOME/bin:$PATH

export HADOOP_HOMEPATH

wq保存退出。

到这里为了测试刚刚配置的信息是否成功,可以重新登录一次。

[root@gdy01 gd]#exit

退出当前用户

然后重新登录:

第五步:检查(hadoop是否已经配置成功,查看hadoop的版本信息)

输入:

[root@gdy01 ~]# hadoopversion

检查java环境变量是否已经配置成功,查看java的版本信息

[root@gdy01 ~]#java -version

这里已经看到配置基本完成。

第六步:修改hadoop的配置文件:

进入hadoop文件夹

[root@gdy01 ~]# cd/usr/gd/hadoop

[root@gdy01hadoop]# cd conf/

[root@gdy01 conf]#ll

【Masters】当前运行的为主节点,Masters定义要运行的第二名称节点。

         hadoop的secondary-masters主机列表,当启动Hadoop时,其会在当前主机上启动NameNode和JobTracker,然后通过SSH连接此文件中的主机以作为备用NameNode;

【Slaves】定义每一个重节点。保证每个节点都运行tasktracke,datenode这两个进程。

Hadoop集群的slave主机列表,master启动时会通过SSH连接至此列表中的所有主机并为其启动DataNode和taskTracker进程;

【core-site.xml】用于定义系统级别的参数,如HDFS URL、Hadoop的临时目录以及用于rack-aware集群中的配置文件的配置等,此中的参数定义会覆盖core-default.xml文件中的默认配置;

【hdfs-site.xml】HDFS的相关设定,如文件副本的个数、块大小及是否使用强制权限等,此中的参数定义会覆盖hdfs-default.xml文件中的默认配置;

【mapred-site.xml】HDFS的相关设定,如reduce任务的默认个数、任务所能够使用内存的默认上下限等,此中的参数定义会覆盖mapred-default.xml文件中的默认配置;

【hadoop-env.sh】用于定义hadoop运行环境相关的配置信息,比如配置JAVA_HOME环境变量、为hadoop的JVM指定特定的选项、指定日志文件所在的目录路径以及master和slave文件的位置等;

经过上面的结束,你应该大致了解了这些配置文件的作业了。接下来就要配置这些信息。

[root@gdy01 conf]#cat masters

[root@gdy01 conf]#cat slaves


我们可以看到这里都是localhost。由于本次是按照的单机模式。所以不需要修改这两个文件。

修改core-site.xml文件

[root@gdy01 conf]#vim core-site.xml

在这个文件中为一个节点,专门用来给我们添加配置信息的。

之间添加如下信息

       

               hadoop.tmp.dir

                /hadoop/temp

       

 

       

               fs.default.name

               hdfs://localhost:8020

       

wq保存退出。

其中:hadoop.tmp.dir的值是指定hadoop的临时目录。

         我们知道hadoop中的Map是会生成临时文件的,这里就是定义类似的临时存放文件的目录。

其中:fs.default.name是用来定义HDFS的默认名称节点路径。就是我们将来访问HDFS文件时,如果没有指定路径,就会联系这里定义的路径的主机,去联系这台主机去寻找其路径。

 

编辑:mapred-site.xml文件

[root@gdy01 conf]#vim mapred-site.xml

同样也能看到这个接口。

添加如下信息在之间

         

             mapred.job.tracker

             localhost:8021

         

wq保存退出

运行MapReduce需要为其指定一个主机作为JobTracker节点,在一个小规模的Hadoop集群中,它通常跟NameNode运行于同一物理主机。可以通过mapred.job.trakcer属性定义JobTracker监听的地址(或主机名)和端口(默认为8021),与前面的fs.default.name属性的值不同的是,这不是一个URI,而仅一个“主机-端口”组合。

 

在MapReduce作业运行过程中,中间数据(intermediate data)和工作文件保存于本地临时文件中。根据运行的MapReduce作业不同,这些数据文件可能会非常大,因此,应该通过mapred.local.dir属性为其指定一个有着足够空间的本地文件系统路径,其默认值为${hadoop.tmp.dir}/mapred/local。mapred.job.tracker可以接受多个以逗号分隔路径列表作为其值,并会以轮流的方式将数据分散存储在这些文件系统上,因此指定位于不同磁盘上的多个文件系统路径可以分散数据I/O。

 

另外,MapReduce使用分布式文件系统为各TaskTracker保存共享数据,这可以通过mapred.system.dir属性进行定义,其默认值为${hadoop.tmp.dir}/mapred/system。下面给出了一个较简单的mapred-site.xml文件示例。

 

编辑:hdfs-site.xml文件

[root@gdy01 conf]#vim hdfs-site.xml

之间添加如下内容

 

      dfs.replication

      1

 

wq保存退出。

HDFS进程有许多属性可以定义其工作路,如dfs.name.dir属性定义的HDFS元数据持久存储路径默认为${hadoop.tmp.dir}/dfs/name、dfs.data.dir属性定义的DataNode用于存储数据块的目录路径默认为${hadoop.tmp.dir}/dfs/data、fs.checkpoint.dir属性定义的SecondaryNameNode用于存储检查点文件的目录默认为${hadoop.tmp.dir}/dfs/namesecondary。

 

为了数据可用性及冗余的目的,HDFS会在多个节点上保存同一个数据块的多个副本,其默认为3个。而只有一个节点的伪分布式环境中其仅用保存一个副本即可,这可以通过dfs.replication属性进行定义。如下所示的内容即可作为最简单的hdfs-site.xml配置文件。

 

第七步:创建启动hadoop的用户,为其用户设置无密码访问本机。

创建hduser用户

[root@gdy01 /]#useradd hduser

将之前的/etc/gd/hadoop文件下的所有文件赋予hduser

[root@gdy01 /]#chown -R hduser.hduser /usr/gd/hadoop/

[root@gdy01 /]# ll/usr/gd/hadoop/

为hduser用户指定密码

[root@gdy01 /]#passwd hduser

在之前配置文件core-site.xml中定义了hadoop的换成文件存放目录。所以现在先创建那个目录,并赋予hduser权限。

[root@gdy01 /]#mkdir /hadoop/temp/ -pv

属于hduser权限

[root@gdy01 /]#chown -R hduser.hduser /hadoop

登录hduser并为hduser创建无密码访问本机

[root@gdy01 /]# su- hduser

[hduser@gdy01 ~]$ssh-keygen -t rsa -P ''

[hduser@gdy01 ~]$ssh-copy-id -i .ssh/id_rsa.pub hduser@localhost

在这个过程中,你需要输入一次yes和一次hduser用户的密码

检查是否可以无密码访问

输入:

[hduser@gdy01 ~]$ssh localhost 'date'

如果没有提示你要输入密码,就证明已经设置成功。

 

第八步:格式化HDFS文件系统并启动hadoop

输入命令:

[hduser@gdy01 ~]$hadoop namenode -format

此时HDFS文件系统已经格式化完成。

输入命令启动hadoop

[hduser@gdy01 ~]$start-all.sh

输入命令jps查看hadoop的进程。

[hduser@gdy01 ~]$jps

到这里看见这5个进程表示hadoop已经启动完成。即单机hadoop配置启动完成。

 

验证:使用Hadoop做一次单词统计

在hadoop文件系统中创建一个目录test

命令:

[hduser@gdy01 ~]$hadoop fs -mkdir test

查看hadoop上的这个目录

[hduser@gdy01 ~]$hadoop fs -ls

上传/etc/profile文件到hadoop的文件系统中

[hduser@gdy01 ~]$hadoop fs -put /etc/profile test/

使用hadoop开始做单词统计读取目录为test/ 结果输出目录为testlog

[hduser@gdy01 ~]$hadoop jar /usr/gd/hadoop/hadoop-examples-0.20.2-cdh3u4.jar wordcount testtestlog

现在任务已经执行完成。

查看hadoop统计完成后输出的文件

[hduser@gdy01 ~]$hadoop fs -ls testlog

查看统计结果

[hduser@gdy01 ~]$hadoop fs -cat testlog/part-r-00000

到这里已经知道了hadoop的单机模式部署。也成功的在hadoop上执行了一次单词统计。

 

 

 

 

 

你可能感兴趣的:(hadoop)