Hadoop的伪分布式模式配置(新手入门详细篇)

Hadoop简介

       Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。以Hadoop分布式文件系统(HDFS,Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。

       对于Hadoop的集群来讲,可以分成两大类角色:Master和Salve。一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的DataNode管理存储的数据。MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个集群从节点的TaskTracker共同组成的。主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个Job被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。

    HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心。HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务。

基于Centos系统进行Hadoop运行环境部署

1.1 下载hadoop

版本:CentOS7Hadoop2.8.0JDK1.8。下载地址:http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.8.0/hadoop-2.8.0.tar.gz


图1.1 hadoop下载


1.2 安装3个虚拟机并实现ssh免密码登录

1.2.1 安装三个虚拟机

分别命名为master、hadoop1、Hadoop2

图1.2 安装3个虚拟

1.2.2 分别修改主机名

如图所示:

图1.3 虚拟机命名1  
图1.4 虚拟机命名2  
图1.5 虚拟机命名3  


1.2.3 修改/etc/hosts文件

修改这3台机器的/etc/hosts文件,在文件中添加以下内容:192.168.56.129 master;;192.168.56.130 hadoop1;192.168.56.131 hadoop2。

图1.6 修改/etc/hosts文件  
图1.7 使用ping命令检查机器是否相互ping通  

1.2.4 生成秘钥文件

以marset为例,如图所示:

图1.8 分别给3台虚拟机生成秘钥文件


1.2.5 在master上创建authorized_keys文件

图1.9 在master上创建authorized_keys文件  

1.2.6 使用ls/root/.ssh/ 命令查看,是否生成成功

图1.10 使用ls/root/.ssh/ 命令 

1.2.7 将authorized_keys文件复制到其他机器

将master上的/root/.ssh/id_rsa.pub文件内容,hadoop1上的/root/.ssh/id_rsa.pub文件内容,hadoop2上的/root/.ssh/id_rsa.pub文件内容复制到这个authorized_keys文件中。

图1.11 将authorized_keys文件复制到 hadoop1 机器和hadoop2 机器上

查看复制结果:


图1.12 查看复制结果


图1.13 查看复制结果


1.2.8 测试使用ssh进行无密码登录

在master进行测试,分别 输入命令:ssh hadoop1;ssh hadoop2。


图1.14 ssh hadoop1测试


图1.15 ssh hadoop2测试


图1.16  hadoop1 ssh master测试


图1.17  hadoop1 ssh hadoop2测试


图1.18  hadoop2 ssh master测试


图1.19  hadoop2 ssh hadoop1测试  

2.3 安装JDK

2.3.1JDK安装

将jdk分别上传到master、hadoop1、hadoop2上:

以master为例:打开Xshell连接master,输入主机名称和IP地址,设置连接方式


图1.21 安装jdk并修改配置文件



图1.22 身份验证  

打开Xftp,在主机master的下创建java文件夹,将jdk上传到master的/home/master/java下:

图1.23 上传完成

进入的/home/master/java目录,进行jdk压缩文件解压,执行命令  cd  /home/master/java

图1.24解压命令  

解压成功,多出jdk1.7.0_80文件

图1.25解压成功  

修改配置文件,执行命令vi /etc/profile

修改配置文件

修改文件,增加的内容是:

export JAVA_HOME=/home/master/hadoop/hadoop-2.8.0

export  CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/

export  PATH=$PATH:$JAVA_HOME/bin

增加命令

修改了/etc/profile文件后,需要把这个文件里保存的命令执行一次(方法是使用source命令)

执行命令source    /etc/profile回车


执行命令

2.3.2测试是否安装成功jdk


图1.23 测试master上是否安装成功java-version 

如图所示,安装成功。

3.4 安装hadoop

以在master上安装为例,另外在2台虚拟机机上重复下面步骤安装即可

3.4.1 上传文件并解压缩

在master目录下新建一个名为hadoop的目录,并将下载得到的hadoop-2.8.0.tar压缩包用Xftp上传到该目录下,如图:

图1.24上传Hadoop  


进入到/home/master/hadoop目录,执行命令:cd /home/master/hadoopp

进入目录

执行解压命令:tar -xvf hadoop-2.8.0.tar.gz;


解压命令


查看是否解压成功


解压成功


说明:另外2台机器都要进行上述操作,解压缩后得到一个名为hadoop-2.8.0的目录,表示解压成功。

3.4.2新建几个目录

在/root目录下新建6个目录,复制粘贴执行下面的命令:

mkdir/root/hadoop

mkdir/root/hadoop/tmp

mkdir/root/hadoop/var

mkdir/root/hadoop/dfs

mkdir/root/hadoop/dfs/name

mkdir/root/hadoop/dfs/data

3.4.3修改etc/hadoop中的一系列配置文件

修改/home/master/hadoop/hadoop-2.8.0/etc/hadoop目录内的一系列文件。

3.4.3.1修改core-site.xml

修改/home/master/hadoop/hadoop-2.8.0/etc/hadoop/core-site.xml文件;

输入命令vi/home/master/hadoop/hadoop-2.8.0/etc/hadoop/core-site.xml

在节点内加入配置:

<property>

<name>hadoop.tmp.dir</name>

<value>/root/hadoop/tmp</value>

<description>Abase for other temporary directories.</description>

</property>

<property>

<name>fs.default.name</name>

<value>hdfs://hserver1:9000</value>

</property>

</configuration>


添加代码


3.4.3.2修改hadoop-env.sh

修改/home/master/hadoop/hadoop-2.8.0/etc/hadoop/hadoop-env.sh文件;将export JAVA_HOME=${JAVA_HOME}修改为:export JAVA_HOME=/home/master/hadoop/hadoop-2.8.0。

说明:修改为自己的JDK路径。

执行命令:vi/home/master/hadoop/hadoop-2.8.0/etc/hadoop/hadoop-env.sh

执行命令


修改路径


3.4.3.3修改hdfs-site.xml

修改/home/master/hadoop/hadoop-2.8.0/etc/hadoop/hdfs-site.xml文件;

在节点内加入配置:

<property>

<name>dfs.name.dir</name>

<value>/root/hadoop/dfs/name</value>

<description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description>

</property>

<property>

<name>dfs.data.dir</name>

<value>/root/hadoop/dfs/data</value>

<description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description>

</property>

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

<property>

<name>dfs.permissions</name>

<value>false</value>

<description>need not permissions</description>

</property>

说明:dfs.permissions配置为false后,可以允许不要检查权限就生成dfs上的文件,方便倒是方便了,但是你需要防止误删除,请将它设置为true,或者直接将该property节点删除,因为默认就是true。

执行命令vi/home/master/hadoop/hadoop-2.8.0/etc/hadoop/hdfs-site.xml


执行命令


添加命令


3.4.3.4新建并且修改mapred-site.xml

在该版本中,有一个名为mapred-site.xml.template的文件,复制该文件,然后改名为mapred-site.xml,

命令:cp /home/master/hadoop/hadoop-2.8.0/etc/hadoop/mapred-site.xml.template  /home/master/hadoop/hadoop-2.8.0/etc/hadoop/mapred-site.xml;

执行命令vi/home/master/hadoop/hadoop-2.8.0/etc/hadoop/mapred-site.xml

在节点内加入配置:

<property>

<name>mapred.job.tracker</name>

<value>hserver1:49001</value>

</property>

<property>

<name>mapred.local.dir</name>

<value>/root/hadoop/var</value>

</property>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>


执行命令



添加命令


3.4.3.5修改slaves文件

修改/home/master/hadoop/hadoop-2.8.0/etc/hadoop/slaves文件,

执行命令:vi/home/master/hadoop/hadoop-2.8.0/etc/hadoop/slaves

将里面的localhost删除,添加如下内容:master;hadoop1;hadoop2


执行命令


添加命令


3.4.3.6修改yarn-site.xml文件

修改/home/master/hadoop/hadoop-2.8.0/etc/hadoop/yarn-site.xml文件,

执行命令vi/home/master/hadoop/hadoop-2.8.0/etc/hadoop/yarn-site.xml

在节点内加入配置:

<property>

<name>yarn.resourcemanager.hostname</name>

<value>hserver1</value>

</property>

<property>

<description>The address of the applications manager interface in the RM.</description>

<name>yarn.resourcemanager.address</name>

<value>${yarn.resourcemanager.hostname}:8032</value>

</property>

<property>

<description>The address of the scheduler interface.</description>

<name>yarn.resourcemanager.scheduler.address</name>

<value>${yarn.resourcemanager.hostname}:8030</value>

</property>

<property>

<description>The http address of the RM web application.</description>

<name>yarn.resourcemanager.webapp.address</name>

<value>${yarn.resourcemanager.hostname}:8088</value>

</property>

<property>

<description>The https adddress of the RM web application.</description>

<name>yarn.resourcemanager.webapp.https.address</name>

<value>${yarn.resourcemanager.hostname}:8090</value>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>${yarn.resourcemanager.hostname}:8031</value>

</property>

<property>

<description>The address of the RM admin interface.</description>

<name>yarn.resourcemanager.admin.address</name>

<value>${yarn.resourcemanager.hostname}:8033</value>

</property>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.scheduler.maximum-allocation-mb</name>

<value>2048</value>

<discription>每个节点可用内存,单位MB,默认8182MB</discription>

</property>

<property>

<name>yarn.nodemanager.vmem-pmem-ratio</name>

<value>2.1</value>

</property>

<property>

<name>yarn.nodemanager.resource.memory-mb</name>

<value>2048</value>

</property>

<property>

<name>yarn.nodemanager.vmem-check-enabled</name>

<value>false</value>

</property>


执行命令


添加命令


3.5启动hadoop

3.5.1初始化hadoop

在namenode上执行初始化,因为master是namenode,hadoop1和hadoop2都是datanode,所以只需要对master进行初始化操作,也就是对hdfs进行格式化。

进入到master这台机器的/home/master/hadoop/hadoop-2.8.0/bin目录,就是执行命令: cd   /home/master/hadoop/hadoop-2.8.0/bin


执行初始化脚本,执行命令:./hadoop  namenode  -format


执行命令


执行初始化  

3.5.2启动hadoop

在namenode上执行启动命令,

因为master是namenode,hadoop1和hadoop2都是datanode,所以只需要再master上执行启动命令即可。

进入到master这台机器的/home/master/hadoop/hadoop-2.8.0/sbin目录,也就是执行命令:

cd  /home/master/hadoop/hadoop-2.8.0/sbin


执行启动脚本,即执行命令:

 ./start-all.sh


进入目录


启动hadoop


3.6 测试hadoop


haddoop启动了,需要测试一下hadoop是否正常。执行命令,关闭防火墙,CentOS6下,命令是: service iptables stop


关闭防火墙成功


测试hadoop部署是否成功:  master是我的namanode,该机器的IP是192.168.56.129,在本地电脑访问如下地址:http://192.168.56.129:50070/自动跳转到了overview页面。


图1.22 hadoop测试结果显示图


在本地浏览器里访问如下地址:http://192.168.56.129:8088/ 自动跳转到了cluster页面




图1.23 hadoop测试结果显示图  

检验hadoop是否运行,输入:jps


hadoop正在运行


到此hadoop的伪分布模式配置完成。  

       写在最后的话:学而不思则罔。学习是一个输入输出的双向过程,要想学会、学牢一个知识点,不仅仅靠足够的输入,内化理解输出的过程也很重要,故这也是本文写作初衷之一。本文是笔者基于大学时上的操作系统课程中的课程设计大作业,整理编辑而成,全当做总结复习使用。步骤比较详细,时候刚刚学习接触Linux的同学,由于笔者水平有限,对操作系统了解甚浅,如若读者发现不足,感谢给予提出和纠正,欢迎各位同学留言讨论交流。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、系统参数配置优化 1、系统内核参数优化配置 修改文件/etc/sysctl.conf,添加如下配置,然后执行s...
    张伟科阅读 3,782评论 0 14
  • 说明:本文所有操作均在 64位 ubuntu 16.04 操作系统下进行 准备 通过物理机器虚拟化 4 台虚拟机:...
    kviccn阅读 2,777评论 4 5
  • 之前的有点忘记了,这里在云笔记拿出来再玩玩.看不懂的可以留言 大家可以尝试下Ambari来配置Hadoop的相关环...
    HT_Jonson阅读 3,006评论 0 50
  • 常年保持健身习惯的我,会偶尔在票圈晒晒健身照。前段时间就被票圈里开美容院的朋友隔空怼了。 她最近代理一款塑身内衣,...
    林不饿阅读 771评论 0 1
  • 我不知道人生的意义在哪里,只知道我会一直这样走,走到我所喜欢的生活,原本我会一直坚定不移地相信自己的选择,不管付...
    孤独的行梦人阅读 381评论 1 2