hadoop全分布模式环境搭建

这是我第一次搭建全分布模式,本文都是参照网友教程,按照我自己的实践过程将其进行组织。我是利用三台虚拟机进行搭建的,每台虚拟机都是ubuntuserver16.04.1(64位)。搭建过程中有很多步骤和参数配置我还在研究,具体原理我现在无法讲清楚,等以后知识到我了我再来修改本文的不足和完善。文末有参考文章,大家可以综合参考。

一 集群搭建准备

1 虚拟机:三个虚拟机均为ubuntuserver16.04.1(ubuntu-16.04.1-desktop-amd64.iso)操作系统,虚拟机主机名(hostname)分别为master,slave0,slave1

2 hadoop版本:hadoop-2.7.3.tar.gz

3 JDK: jdk-8u101-linux-x64.tar.gz

4 在每台虚拟机中都新建一个用户,取名hadoop(注:用户名取任何名字都可以,但要保证每台虚拟机的用户名一致,这样在后面配置虚拟机之间远程免密码登录时才能成功)

二 安装jdk(在每台机器上都进行同样操作)

(1) 网上下载源:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

(2)将压缩包放置到/usr/lib/jvm目录下

(3)解压压缩包:sudo tar -zxvf  jdk-8u101-linux-x64.tar.gz

(4)配置环境变量

打开当前用户的shell环境变量配置文件

vim ~/.bashrc

在文件末尾添加如下信息

#begin copy

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_101

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$JAVA_HOME/bin:$PATH

#end copy

注意:

(1)上面配置信息中的蓝色部分为你解压出来的jdk文件夹所在的路径,这个可以根据自己的实际情况设置,如我将安装包jdk-8u101-linux-x64.tar.gz解压到/usr/local路径下,则JAVA_HOME配置变为export JAVA_HOME=/usr/local/jdk1.8.0_101

(2)上述配置只适用于当前用户,如果要对所有用户进行同样的设置,即要让所有用户都能使用该jdk,则应该配置/etc/bashrc文件,关于/etc/profile,/etc/bashrc,~/.bashrc以及~/.bash_profile之间的关系请参看http://blog.csdn.net/chenchong08/article/details/7833242

(5)使配置的环境变量生效:source ~/.bashrc(~/.bashrc文件的配置改变后不需要重启系统即可立即设置生效)

(6)检查安装是否成功:

java -version

#若安装成功,则会提示如下信息

三 免密码登录设置

hadoop工作时,各节点要相互通讯,正常情况下linux之间通讯要提供用户名、密码(目的是保证通讯安全),如果需要人工干预输入密码,显然不方便,做这一步的目的,是让各节点能自动通过安全认证,不影响正常通讯。

在设置免密码登录前确保安装了ssh服务,依次直接执行下面命令安装即可,若安装了则会提示已安装。

sudo apt-get install openssh-server

sudo apt-get install ssh

3.1 先在master上生成公钥、私钥对

以hadoop身份登录系统

cd ~/.ssh

如果没有.ssh这个隐藏文件夹,则先执行以下命令:

ssh localhost

在.ssh目录下执行:

ssh-keygen -t rsa -P ‘‘(注:最后使两个单引号)

即:以rsa算法,生成公钥、私钥对,-P ‘‘表示空密码。该命令运行完后,会在个人主目录下生成.ssh目录,里面会有二个文件id_rsa(私钥) ,id_rsa.pub(公钥)

3.2 导入公钥

cat .ssh/id_rsa.pub >> .ssh/authorized_keys

执行完以后,可以在本机上测试下,用ssh连接自己,即:ssh localhost (或ssh master),如果不幸还是提示要输入密码,说明还没起作用,还有一个关键的操作

chmod 600 .ssh/authorized_keys (修改文件权限,否则不起作用)

然后再测试下 ssh localhost ,如果不需要输入密码,就连接成功,表示ok,一台机器已经搞定了。

3.3在其它机器上生成公钥、密钥,并将公钥文件复制到master

a) 以hadoop身份登录其它二台机器 slave0、slave1,执行:

ssh-keygen -t rsa -P ‘‘ 生成公钥、密钥

b) 然后用scp命令,把公钥文件发放给master(即:刚才已经搞定的那台机器)

slave0上:

scp .ssh/id_rsa.pub [email protected]:/home/hadoop/id_rsa_0.pub

slave1上:

scp .ssh/id_rsa.pub [email protected]:/home/hadoop/id_rsa_1.pub

这二行执行完后,回到master中,查看下/home/hadoop目录,应该有二个新文件id_rsa_0.pub、id_rsa_1.pub,然后在master上,导入这二个公钥

cat id_rsa_0.pub >> .ssh/authorized_keys

cat id_rsa_1.pub >> .ssh/authorized_keys

这样,master这台机器上,就有所有3台机器的公钥了。

完成这一步后,只能实现master免密码远程登录到slave0和slave1,单两个从节点(slave0,slave1)无法免密码登录到主节点master上。还需接着做下一步配置

3.4将master上的“最全”公钥,复制到其它机器

a) 继续保持在master上,

scp .ssh/authorized_keys [email protected]e0:/home/hadoop/.ssh/authorized_keys

scp .ssh/authorized_keys [email protected]:/home/hadoop/.ssh/authorized_keys

b) 修改其它机器上authorized_keys文件的权限(如果hadoop用户对authorized_keys已经具有权限6或7,则这一步可以不用做)

slave0以及slave1机器上,均执行命令

chmod 600 .ssh/authorized_keys

3.5 验证

在每个虚拟机上,均用 ssh 其它机器的hostname 验证下,如果能正常无密码连接成功,表示ok

小结:该步骤非常重要,主要思路是在各节点上生成公钥、私钥,然后将公钥发放其它所有节点。RSA算法是非对称加密算法,仅公布“公钥”,只要私钥不外泄,还是不能解密的,所以安全性依然有保障。

如果本步骤失败,根据我个人经验,多半是权限问题,请检查hadoop是否具有足够权限,建议将hadoop加入sudoers列表及root用户组。另外,这里也整理了一些SSH免密码设置失败的原因,请移步 ssh 免密码设置失败原因总结

四 安装hadoop

我们直接将hadoop安装在用户根目录下(/home/hadoop/)

4.1 直接解压hadoop压缩包到根目录下

tar -zxvf hadoop-2.7.3.tar.gz

解压完成后在/home/hadoop/会多出一个hadoop-2.7.3文件夹

4.2 修改配置文件

一共有七个文件需要配置:

$HADOOP_HOME/etc/hadoop/hadoop-env.sh

$HADOOP_HOME/etc/hadoop/yarn-env.sh

$HADOOP_HOME/etc/hadoop/core-site.xml

$HADOOP_HOME/etc/hadoop/hdfs-site.xml

$HADOOP_HOME/etc/hadoop/mapred-site.xml

$HADOOP_HOME/etc/hadoop/yarn-site.xml

$HADOOP_HOME/etc/hadoop/slaves

其中$HADOOP_HOME表示hadoop根目录,本文中默认为/home/hadoop/hadoop-2.7.3

(1)  配置文件1:hadoop-env.sh

该文件是hadoop运行基本环境的配置,需要修改的为java虚拟机的位置。

故在该文件中修改JAVA_HOME值为本机安装位置(如,export JAVA_HOME=/usr/lib/jvm/java-1.7.0)

(2) 配置文件2:yarn-env.sh

该文件是yarn框架运行环境的配置,同样需要修改java虚拟机的位置。

在该文件中修改JAVA_HOME值为本机安装位置(如,export JAVA_HOME=/usr/lib/jvm/java-1.7.0)

(3)配置文件3:slaves

该文件里面保存所有slave节点的信息,以本篇为例

写入以下内容(hosts里从机的主机名):

Slave0

Slave1

(4)配置文件4:core-site.xml

<configuration>

<property>

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

<value>/home/hadoop/tmp</value>

</property>

<property>

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

<value>hdfs://master:9000</value>

</property>

</configuration>

这个是hadoop的核心配置文件,这里需要配置的就这两个属性,fs.default.name配置了hadoop的HDFS系统的命名,位置为主机的9000端口;hadoop.tmp.dir配置了hadoop的tmp目录的根位置。这里使用了一个文件系统中没有的位置,所以要先用mkdir命令新建一下(我将tpm文件夹创建在用户根目录下)。

有关core-site.xml各项参数的具体介绍请见:http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-common/core-default.xml

(5)配置文件5:hdfs-site.xml

<configuration>

<property>

<name>dfs.http.address</name>

<value>master:50070</value>

</property>

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>master:50090</value>

</property>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

<property>

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

<value>file:/home/hadoop/dfs/name</value>

</property>

<property>

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

<value>file:/home/hadoop/dfs/data</value>

</property>

<property>

<name>dfs.webhdfs.enabled</name>

<value>true</value>

</property>

</configuration>

注意:路径/dfs/name和/dfs/data需要手动创建;dfs.http.address配置了hdfs的http的访问位置;dfs.replication配置了文件块的副本数,一般不大于从机的个数。

namenode的hdfs-site.xml是必须将dfs.webhdfs.enabled属性设置为true,否则就不能使用webhdfs的LISTSTATUS、LISTFILESTATUS等需要列出文件、文件夹状态的命令,因为这些信息都是由namenode来保存的。

访问namenode的hdfs使用50070端口,访问datanode的webhdfs使用50075端口。访问文件、文件夹信息使用namenode的IP和50070端口,访问文件内容或者进行打开、上传、修改、下载等操作使用datanode的IP和50075端口。要想不区分端口,直接使用namenode的IP和端口进行所有的webhdfs操作,就需要在所有的datanode上都设置hefs-site.xml中的dfs.webhdfs.enabled为true。

有关hdfs-site.xml各项参数的详细介绍请见:http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

(6)配置文件6:mapred-site.xml

<configuration>

<property>

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

<value>master:9001</value>

</property>

<property>

<name>mapred.map.tasks</name>

<value>20</value>

</property>

<property>

<name>mapred.reduce.tasks</name>

<value>4</value>

</property>

<property>

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

<value>yarn</value>

</property>

<property>

<name>mapreduce.jobhistory.address</name>

<value>Master:10020</value>

</property>

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>Master:19888</value>

</property>

</configuration>

这个是mapreduce任务的配置,由于hadoop2.x使用了yarn框架,所以要实现分布式部署,必须在mapreduce.framework.name属性下配置为yarn。mapred.map.tasks和mapred.reduce.tasks分别为map和reduce的任务数,至于什么是map和reduce,可参考其它资料进行了解。

其它属性为一些进程的端口配置,均配在主机下。

mapred-site.xml的详细参数介绍请见:http://hadoop.apache.org/docs/r2.7.3/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

(7)配置文件7:yarn-site.xml

<configuration>

<property>

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

<value>Master:8032</value>

</property>

<property>

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

<value>Master:8030</value>

</property>

<property>

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

<value>Master:8088</value>

</property>

<property>

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

<value>Master:8031</value>

</property>

<property>

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

<value>Master:8033</value>

</property>

<property>

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

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

<value>org.apache.hadoop.mapred.ShuffleHandler</value></property>

</configuration>

该文件为yarn框架的配置,主要是一些任务的启动位置

4.3 将配置好的hadoop直接复制到其他从节点(以下命令均在master主节点上执行)

scp –r ~/hadoop-2.7.3 [email protected]:~/

scp –r ~/hadoop-2.7.3 [email protected]:~/

4.4 启动验证

(1)格式化namenode(在hadoop安装文件夹下执行以下命令)

bin/hdfs namenode -forma

(2)启动hdfs

sbin/start-dfs.sh

此时在Master上面运行的进程有:namenode secondarynamenode

slave0和slave1上面运行的进程有:datanode

(3)启动yarn

sbin/start-yarn.sh

此时在Master上面运行的进程有:namenode secondarynamenode resourcemanager

Slave0和Slave1上面运行的进程有:datanode nodemanager

(4)检查启动结果

查看集群状态:bin/hdfs dfsadmin –report

查看文件块组成: bin/hdfs fsck / -files -blocks

查看HDFS: http://192.168.56.109:50070(主机IP)

查看RM: http:// 192.168.56.109:8088(主机IP)

5参考文章

(1)http://www.aboutyun.com/thread-11824-1-1.html

(2)http://jingyan.baidu.com/article/27fa73269c02fe46f9271f45.html

(3)http://www.cnblogs.com/yjmyzz/p/4280069.html

(4)http://www.cnblogs.com/yjmyzz/p/4481720.html

(5)http://blog.csdn.net/m1213642578/article/details/52468829?locationNum=3

(6)http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-hdfs/ExtendedAttributes.html

(7)http://blog.csdn.net/shoubuliaolebu/article/details/43575027

(8)http://blog.csdn.net/yangjl38/article/details/7583374

时间: 2024-11-19 07:02:34

hadoop全分布模式环境搭建的相关文章

Hadoop伪分布模式环境搭建

最近开始研究学习hadoop,想把自己的一些知识点写在这里作为自己的学习记录.同时,如果能够为有需要的朋友带来帮助也是一件快乐的事.这篇文章基本上都是参考网上的资料,我按照自己的理解和实践经验将其组织起来.网上大多教程没有具体介绍操作的背后原因,我按照我的理解以及将一些分布于网上比较散乱的细碎知识点进行了组织.因为时间以及个人能力原因,本安装文档会存在很多不足,后期我也会努力去学习提高自己.我的博客园之旅就以此hadoop安装开始.因为时间原因,我第一次发博客,图片没有加上,不过文章基本描述清楚

Hadoop全分布模式操作

http://blog.csdn.net/wangloveall/article/details/20767161 摘要:介绍Hadoop全分布模式操作,实现真正意义上的集群架构. 关键词:Hadoop  全分布模式  文件配置 利用Hadoop解决大数据问题时,我们是用全分布模式来操作Hadoop. 如何基于全分布模式来操作Hadoop,构建Hadoop集群呢?具体步骤如下. 第一步:配置hosts文件. 执行命令: vi  /etc/hosts,修改所有的节点,使得彼此之间都能把主机名解析为

【转】Hadoop HDFS分布式环境搭建

原文地址  http://blog.sina.com.cn/s/blog_7060fb5a0101cson.html Hadoop HDFS分布式环境搭建 最近选择给大家介绍Hadoop HDFS系统,因此研究了一下如何在Linux 下配置一个HDFS Clust.小记一下,以备将来进一步研究和记忆. HDFS简介 全称 Hadoop Distributed File System, Hadoop分布式文件系统. 根据Google的GFS论文,由Doug Cutting使用JAVA开发的开源项目

《Programming Hive》读书笔记(一)Hadoop和hive环境搭建

<Programming Hive>读书笔记(一)Hadoop和Hive环境搭建 先把基本的技术和工具学好,才能更高效地思考和工作. Chapter 1.Introduction 简介 Chapter 2.Getting Started 环境配置 Hadoop版本会更新,以官方安装教程为准 http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html#Standalone_O

hadoop和hdfs环境搭建

参考链接:http://blog.csdn.net/zolalad/article/details/11470449 环境:ubuntu14.04 hadoop1.0.1 下面以3台机器为例,讲解安装过程 1) 准备3台机器,一台作为nameNode,命名为master,两台作为dataNode,命名为slave01, slave02.强调命名是为了方便管理,其实命名无所谓.如果已命名为其它名称,可通过编辑/etc/hostname进行更改. 2) 为所有主从节点配置静态ip,因为主从节点间需要

win7+Myeclipse10开发Hadoop应用程序环境搭建

1.复制linux下已配置安装好的hadoop目录进入windows, 同时修改hadoo-env.sh文件的JAVA_HOME为windows下的jdk目录. 2.复制hadoop-eclipse-1.2.jar插件进入myeclipse文件夹下dropins下 下载:我的文件下有一个以hadoop-eclipse1.2.rar文件(压缩包),下载下来,将后缀改为jar就可以了 3.重启myeclipse 4.配置:windows-Preference->windows下的hadoop目录 5

Hadoop源代码阅读环境搭建

Hadoop源代码阅读环境搭建 一.说明 作为一个学习hadoop的同学.必须在本机上搭建hadoop源代码阅读环境,这样,在方便阅读源代码的同一时候也方便进行调试和源代码改动. 好了.以下開始搭建好开发环境. 1.环境说明:hadoop 版本号:1.2.1. IDE:eclipse.操作系统:centos 2.网上有人是通过eclipse的新建项目指定文件夹的方式将hadoop文件夹转换成Eclipseproject同一时候导入eclipse,详细做法例如以下: File-->new-->J

windows 7使用eclipse下hadoop应用开发环境搭建

因为一些缘故,这节内容到现在才写,其实弄hadoop有一段时间了,可以编写一些小程序了,今天来还是来说说环境的搭建.... 说明一下:这篇文章的步骤是接上一篇的hadoop文章的:http://blog.csdn.net/enson16855/article/details/37725771 ,如果不是按照上篇的方式安装hadoop,可能会有些错误~百度一下就能解决的哈~ 准备环境: 不用多说了,我用eclipse版本是最新JavaEE版本,叫什么LUA Kepler,本来是用Juno的,因为操

分享知识-快乐自己:Liunx-大数据(Hadoop)初始化环境搭建

大数据初始化环境搭建: 一):大数据(hadoop)初始化环境搭建 二):大数据(hadoop)环境搭建 三):运行wordcount案例 四):揭秘HDFS 五):揭秘MapReduce 六):揭秘HBase 七):HBase编程 ----------------------------------------------------------------- 1):需要准备三个虚拟机环境(创建方式:可以单独创建三个虚拟机:点我查看如何安装虚拟机.也可以通过克隆方式:点我查看克隆详情) 2):