文档章节

hadoop分布式部署

lee_ypp
 lee_ypp
发布于 2014/07/14 14:58
字数 1924
阅读 4170
收藏 195
点赞 8
评论 11


1.硬件环境

共有 3 台机器,均使用的 linux 系统,Java 使用的是 jdk1.6.0。 配置如下:

hadoop1.example.com:192.168.2.1(NameNode)

hadoop2.example.com:192.168.2.2(DataNode)

hadoop3.example.com:192.168.2.3 (DataNode)

hadoop4.example.com:192.168.2.4

主机与IP之间有正确解析

对于 Hadoop 来说,在 HDFS 看来,节点分为 Namenode 和 Datanode,其中Namenode 只有一个, Datanode 可以是很多;在 MapReduce 看来,节点又分为Jobtracker 和 Tasktracker,其中 Jobtracker 只有一个,Tasktracker 可以是很多。我是将 namenode 和 jobtracker 部署在 hadoop1 上, hadoop2, hadoop3 作为 datanode和 tasktracker 。当然你也可以将 namenode ,datanode ,jobtracker,tasktracker 全部部署在一台机器上(这样就是伪分布式)

2.目录结构

由于 Hadoop 要求所有机器上 hadoop 的部署目录结构要相同,并且都有一个相同的用户名的帐户。

我 的 三 台 机 器 上 是 这 样 的 : 都 有 一 个 hadoop 的 帐 户 , 主 目 录是/home/hadoop。

添加用户hadoop

#useradd -u 800 hadoop

#passwd hadoop 给用户hadoop创建密码

下载hadoop-1.2.1.tar.gz

解压    #tar zxf hadoop-1.2.1.tar.gz

#mv hadoop-1.2.1 /home/hadoop/

#cd /home/hadoop

#chown -R hadoop.hadoop hadoop-1.2.1/

#ln -s hadoop-1.2.1 hadoop

切到hadoop用户 #su - hadoop

下载jdk-6u32-linux-x64.bin到家目录下

$sh jdk-6u32-linux-x64.bin

$cd /home/hadoop/

$mv jdk1.6.0_32 hadoop-1.2.1/

$cd hadoop-1.2.1/

创建软链接,以便与日后的更新、升级

$ln -s jdk1.6.0_32 jdk

3.SSH设置

在 Hadoop 启动以后,Namenode 是通过 SSH(Secure Shell)来启动和停止各个节点上的各种守护进程的,这就需要在节点之间执行指令的时候是不需要输入密码的方式,故我们需要配置 SSH 使用无密码公钥认证的方式。

首先要保证每台机器上都装了 SSH 服务器,且都正常启动。实际中我们用的都是 OpenSSH,这是 SSH 协议的一个免费开源实现。

以本文中的 3 台机器为例,现在 hadoop1 是主节点,它需要主动发起 SSH连接到 hadoop2 ,对于 SSH 服务来说, hadoop1 就是 SSH 客户端,而hadoop2,hadoop3 则是 SSH 服务端,因此在 hadoop2,hadoop3 上需要确定 sshd 服务已经启动。简单的说,在 hadoop1 上需要生成一个密钥对,即一个私钥,一个公钥。将公钥拷贝到 hadoop2 上,这样,比如当 hadoop1 向 hadoop2 发起 ssh 连接的时候,hadoop2 上就会生成一个随机数并用 hadoop1 的公钥对这个随机数进行加密并发送给 hadoop1,hadoop1 收到这个加密的数以后用私钥进行解密,并将解密后的数发送回hadoop2,hadoop2 确认解密的数无误后就允许 hadoop1 进行连接了。这就完成了一次公钥认证过程。

对于本文中的 3 台机器,首先在 hadoop1 上生成密钥对:

#su - hadoop

$ssh-keygen 

这个命令将为 hadoop1 上的用户 hadoop 生成其密钥对。生成的密钥对id_rsa,id_rsa.pub,在/home/hadoop/.ssh 目录下。

$ssh-copy-id localhost 

$ssh-copy-id 192.168.2.2

$ssh-copy-id 192.168.2.3

发布密钥到你本地和hadoop2、hadoop3

试着登录本地和hadoop2、hadoop3看是否有密码验证,无密码即验证成功


4.环境变量

在 /home/hadoop/hadoop-1.2.1/conf/ 目 录 下 的 hadoop-env.sh 中 设 置Hadoop 需 要 的 环 境 变 量 , 其 中 JAVA_HOME 是 必 须 设 定 的 变 量 。HADOOP_HOME 变量可以设定也可以不设定,如果不设定, HADOOP_HOME默认的是 bin 目录的父目录,即本文中的/home/hadoop/hadoop。

vim /home/hadoop/hadoop-1.2.1/conf/hadoop-env.sh

export JAVA_HOME=/home/hadoop/hadoop/jdk(第九行)

先进行简单测试:

$cd  /home/hadoop/hadoop/

$mkdir input

$cp conf/* input/

$bin/hadoop jar hadoop-examples-1.2.1.jar

$bin/hadoop jar hadoop-examples-1.2.1.jar grep input output 'dfs[a-z.]+'

$cd output

$cat *

统计文件中的单词:

$bin/hadoop jar hadoop-examples-1.2.1.jar

$bin/hadoop jar hadoop-examples-1.2.1.jar wordcount input test

$cd test/

$cat *

5.hadoop配置文件

$cd /home/hadoop/hadoop/conf

conf/core-site.xml:

<configuration>
     <property>
         <name>fs.default.name</name>
         <value>hdfs://hadoop1.example.com:9000</value>
     </property></configuration>

conf/hdfs-site.xml:

<configuration>
     <property>
         <name>dfs.replication</name>
         <value>2</value>
     </property></configuration>

conf/mapred-site.xml:

<configuration>
     <property>
         <name>mapred.job.tracker</name>
         <value>hadoop1.example.com:9001</value>
     </property></configuration>

伪分布式测试:

$mkdir /home/hadoop/bin

$ln -s /home/hadoop/hadoop/jdk/bin/jps /home/hadoop/bin/

$cd /home/hadoop/hadoop/

$bin/hadoop namenode -format  先进行初始化

$bin/start-all.sh

web测试192.168.2.150070

192.168.2.150030

$rm -fr input/ output/ test/

$bin/hadoop fs -mkdir input

$bin/hadoop fs -put conf input

$bin/hadoop fs -lsr

192.168.2.150075/browseDirectory.jsp?namenodeInfoPort=50070&dir=/

下查看/usr/hadoop/input是否有变化

6.部署Hadoop

前面讲的这么多 Hadoop 的环境变量和配置文件都是在 hadoop1 这台机器上的,现在需要将 hadoop 部署到其他的机器上,保证目录结构一致。

$scp -r /home/hadoop/hadoop hadoop2.example.com:/home/hadoop/

$scp -r /home/hadoop/hadoop hadoop3.example.com:/home/hadoop/

$scp -r .ssh/ hadoop2.example.com:

$scp -r .ssh/ hadoop3.example.com:

注意还要修改以下文件:

$cd /home/hadoop/hadoop/conf

conf/masters

hadoop1.example.com

conf/slaves

hadoop2.example.com
hadoop3.example.com

$ln -s hadoop-1.2.1/ hadoop

$mkdir /home/hadoop/bin

$ln -s /home/hadoop/hadoop/jdk/bin/jps /home/hadoop/bin

至此,可以说,Hadoop 已经在各个机器上部署完毕了,下面就让我们开始启动 Hadoop 吧。

7. 启动 Hadoop

启动之前,我们先要格式化 namenode,先进入~/hadoop/目录,执行下面的命令:

$bin/hadoop namenode –format

不出意外,应该会提示格式化成功。如果不成功,就去 hadoop/logs/目录下去查看日志文件。

下面就该正式启动 hadoop 啦,在 bin/下面有很多启动脚本,可以根据自己的需要来启动。

* start-all.sh 启动所有的 Hadoop 守护。包括 namenode, datanode, jobtracker,tasktrack

* stop-all.sh 停止所有的 Hadoop

* start-mapred.sh 启动 Map/Reduce 守护。包括 Jobtracker 和 Tasktrack

* stop-mapred.sh 停止 Map/Reduce 守护

* start-dfs.sh 启动 Hadoop DFS 守护.Namenode 和 Datanode

* stop-dfs.sh 停止 DFS 守护

在这里,简单启动所有守护:
[hadoop@hadoop1:hadoop]$bin/start-all.sh

$jps

查看JobTracker,Jps,SecondaryNameNode,NameNode是否启动成功。

同样,如果要停止 hadoop,则

[hadoop@hadoop1:hadoop]$bin/stop-all.sh

8. HDFS 操作

运行 bin/目录的 hadoop 命令,可以查看 Haoop 所有支持的操作及其用法,这里以几个简单的操作为例。

建立目录:

[hadoop@hadoop1 hadoop]$bin/hadoop dfs -mkdir testdir

在 HDFS 中建立一个名为 testdir 的目录,复制文件:

[hadoop@hadoop1 hadoop]$bin/hadoop dfs -put /home/large.zip testfile.zip

把 本 地 文 件 large.zip 拷 贝 到 HDFS 的 根 目 录 /user/hadoop/ 下 , 文 件 名 为testfile.zip,查看现有文件:

[hadoop@hadoop1 hadoop]$bin/hadoop dfs -ls

9.hadoop 在线更新节点:

新增节点:

1). 在新增节点上安装 jdk,并创建相同的 hadoop 用户,uid 等保持一致

2). 在 conf/slaves 文件中添加新增节点的 ip

3). 同步 master 上 hadoop 所有数据到新增节点上,路径保持一致

4). 在新增节点上启动服务:

$ bin/hadoop-daemon.sh start datanode

$ bin/hadoop-daemon.sh start tasktracker

5). 均衡数据:

$ bin/start-balancer.sh

(1)如果不执行均衡,那么 cluster 会把新的数据都存放在新的 datanode 上,这样会降低 mapred的工作效率

2)设置平衡阈值,默认是 10%,值越低各节点越平衡,但消耗时间也更长

$ bin/start-balancer.sh -threshold 5

在线删除datanode节点:

1). 在 master 上修改 conf/mapred-site.xml

<property>

<name>dfs.hosts.exclude</name>

<value>/home/hadoop/hadoop-1.2.1/conf/datanode-excludes</value>

</property>

2). 创建 datanode-excludes 文件,并添加需要删除的主机,一行一个

192.168.2.4

3). 在 master 上在线刷新节点

$ bin/hadoop dfsadmin -refreshNodes

此操作会在后台迁移数据,等此节点的状态显示为 Decommissioned,就可以安全关闭了。

4). 你可以通过以下命令查看 datanode 状态

$ bin/hadoop dfsadmin -report

在做数据迁移时,此节点不要参与 tasktracker,否则会出现异常。

在线删除tasktracker 节点:

1). 在 master 上修改 conf/mapred-site.xml

<property>

<name>mapred.hosts.exclude</name>

<value>/home/hadoop/hadoop-1.2.1/conf/tasktracker-excludes</value>

</property>

2. 创建 tasktracker-excludes 文件,并添加需要删除的主机名,一行一个

hadoop4.example.com

3. 在 master 上在线刷新节点

$ bin/hadoop mradmin -refreshNodes

4. 登录 jobtracker 的网络接口,进行查看。
                --@leeypp.foxmail.com








© 著作权归作者所有

共有 人打赏支持
lee_ypp
粉丝 64
博文 45
码字总数 58692
作品 0
程序员
加载中

评论(11)

johncan
johncan
解释得很详细
sunnyair0701
sunnyair0701

引用来自“lee_ypp”的评论

引用来自“ihuotui”的评论

参考intel hadoop管理软件,他使用了Puppet。
puppet已经学习了,感觉不错

不错啊
lee_ypp
lee_ypp

引用来自“LiangShao”的评论

为什么没有配 zookeeper
zookeeper的配置不是必需的
LiangShao
LiangShao
为什么没有配 zookeeper
lee_ypp
lee_ypp

引用来自“kcen”的评论

正在学习
好的,可以一起探讨
kcen
kcen
正在学习
lee_ypp
lee_ypp

引用来自“ihuotui”的评论

参考intel hadoop管理软件,他使用了Puppet。
puppet已经学习了,感觉不错
moli
moli
学习
p
polaris_chen
我看错了,不是自动化部署。
p
polaris_chen
你这个叫什么自动化部署?
Spark的Standalone模式安装部署

Spark运行模式 Spark 有很多种模式,最简单就是单机本地模式,还有单机伪分布式模式,复杂的则运行在集群中,目前能很好的运行在 Yarn和 Mesos 中,当然 Spark 还有自带的 Standalone 模式,...

Zero零_度
2016/06/04
38
0
基于Docker一键部署大规模Hadoop集群及设计思路

欢迎关注大数据和人工智能技术文章发布的微信公众号:清研学堂,在这里你可以学到夜白(作者笔名)精心整理的笔记,让我们每天进步一点点,让优秀成为一种习惯! 一、背景: 随着互联网的发展...

李金泽
03/04
0
0
Hadoop伪分布式安装(HDFS)步骤

1.安装前的准备工作 在进行Hadoop伪分布式安装前要检测虚拟机是否进行了下面的配置: 1. 修改主机名 2. 修改主机名与ip之间的映射关系 3. 配置虚拟机网络可以进行上网 2.伪分布式部署(HDFS)...

yu0_zhang0的博客
2017/12/19
0
0
SpirngXD on YARN模式部署说明

SpirngXD on YARN模式部署说明 OneCoder2016-11-0156 阅读 Spring XD可以on yarn运行。 下载on yarn运行包并解压 部署本地Hadoop环境 要on yarn运行需要依赖本地的Hadoop环境。下载Hadoop安装...

OneCoder
2016/11/01
0
0
Hadoop单节点伪分布式部署

Hadoop:一个分布式系统基础架构,由Apache基金会所开发。 用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。 Hadoop实现了一个分布式文件系统(...

我爱吃葱花
2014/03/11
0
0
Hadoop3.1.0完全分布式集群部署超详细记录

Hadoop3.1.0完全分布式集群部署,三台服务器部署结构如下github配置文件源码地址 如上图,一共三台机器作为集群,servera作为master,其他两台作为worker。 2.开始部署-前期准备(三台机器都需...

dream_an
05/09
0
0
Hadoop单机模式部署

一、Hadoop部署模式 单机模式:默认情况下运行为一个单独机器上的独立Java进程,主要用于调试环境 伪分布模式:在单个机器上模拟成分布式多节点环境,每一个Hadoop守护进程都作为一个独立的J...

结束的伤感
2016/04/20
0
0
分布式系统基础架构--Hadoop

Hadoop 是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式文件系统(H...

匿名
2008/09/14
336.4K
27
迄今为止最大版本:Apache Hadoop3.0发布

  【IT168 资讯】Apache软件基金会宣布了分布式计算开源软件框架第三版。Apache Hadoop 3.0是自2013年Hadoop 2.0发布以来的第一个主要版本。   Apache Hadoop 3.0的项目经理Andrew Wang...

it168网站
2017/12/19
0
0
Hadoop (CDH4发行版)集群部署

前言 折腾了一段时间hadoop的部署管理,写下此系列博客记录一下。 为了避免各位做部署这种重复性的劳动,我已经把部署的步骤写成脚本,各位只需要按着本文把脚本执行完,整个环境基本就部署完...

snakelxc
2013/07/10
0
19

没有更多内容

加载失败,请刷新页面

加载更多

下一页

shell中的函数、shell中的数组、告警系统需求分析

shell中的函数 格式: 格式: function f_name() { command } 函数必须要放在最前面 示例1(用来打印参数) 示例2(用于定义加法) 示例3(用于显示IP) shell中的数组 shell中的数组1 定义数...

Zhouliang6
今天
2
0
用 Scikit-Learn 和 Pandas 学习线性回归

      对于想深入了解线性回归的童鞋,这里给出一个完整的例子,详细学完这个例子,对用scikit-learn来运行线性回归,评估模型不会有什么问题了。 1. 获取数据,定义问题     没有...

wangxuwei
今天
1
0
MAC安装MAVEN

一:下载maven压缩包(Zip或tar可选),解压压缩包 二:打开终端输入:vim ~/.bash_profile(如果找不到该文件新建一个:touch ./bash_profile) 三:输入i 四:输入maven环境变量配置 MAVEN_HO...

WALK_MAN
今天
0
0
33.iptables备份与恢复 firewalld的9个zone以及操作 service的操作

10.19 iptables规则备份和恢复 10.20 firewalld的9个zone 10.21 firewalld关于zone的操作 10.22 firewalld关于service的操作 10.19 iptables规则备份和恢复: ~1. 保存和备份iptables规则 ~2...

王鑫linux
今天
2
0
大数据教程(2.11):keeperalived+nginx高可用集群搭建教程

上一章节博主为大家介绍了目前大型互联网项目的系统架构体系,相信大家应该注意到其中很重要的一块知识nginx技术,在本节博主将为大家分享nginx的相关技术以及配置过程。 一、nginx相关概念 ...

em_aaron
今天
1
0
Apache Directory Studio连接Weblogic内置LDAP

OBIEE默认使用Weblogic内置LDAP管理用户及组。 要整理已存在的用户及组,此前办法是导出安全数据,文本编辑器打开认证文件,使用正则表达式获取用户及组的信息。 后来想到直接用Apache Dire...

wffger
今天
2
0
HFS

FS,它是一种上传文件的软件。 专为个人用户所设计的 HTTP 档案系统 - Http File Server,如果您觉得架设 FTP Server 太麻烦,那么这个软件可以提供您更方便的档案传输系统,下载后无须安装,...

garkey
今天
1
0
Java IO类库之BufferedInputStream

一、BufferedInputStream介绍 /** * A <code>BufferedInputStream</code> adds * functionality to another input stream-namely, * the ability to buffer the input and to * sup......

老韭菜
今天
0
0
STM 32 窗口看门狗

http://bbs.elecfans.com/jishu_805708_1_1.html https://blog.csdn.net/a1985831055/article/details/77404131...

whoisliang
昨天
1
0
Dubbo解析(六)-服务调用

当dubbo消费方和提供方都发布和引用完成后,第四步就是消费方调用提供方。 还是以dubbo的DemoService举例 -- 提供方<dubbo:application name="demo-provider"/><dubbo:registry address="z...

青离
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部