一个4节点Hadoop集群的配置示例
环境:
操作系统:CentOS 6.5 64bit
Hadoop:Version 1.2.1
Servers:hadoopnamenode,hadoop2ndnamenode,hadoopdatanode1,hadoopdatanode2
注:为方便起见,在这4台server上,我都直接使用root账户进行操作
下载及环境变量设置:
在所有4台server上:
从Apache网站下载hadoop-1.2.1-bin.tar.gz,解压后放置在某个目录下,我放在了/usr/local下,为方便起见,我把目录hadoop-1.2.1改名为hadoop。
修改.bashrc,添加下面的环境变量:
export HADOOP_PREFIX=/usr/local/hadoop
export PATH=$PATH:$HADOOP_PREFIX/bin
配置hosts文件:
在/etc/hosts中添加:
153.65.170.11 hadoopnamenode
153.65.170.45 hadoop2ndnamenode
153.65.171.174 hadoopdatanode1
153.65.171.24 hadoopdatanode2
配置ssh:
在hadoopnamenode上执行:
ssh-keygen//生成公钥、私钥
ssh-copy-id –i ~/.ssh/id_rsa.pub root@hadoop2ndnamenode//将hadoopnamenode的公钥copy到其它三台server上
ssh-copy-id –i ~/.ssh/id_rsa.pub root@hadoopdatanode1
ssh-copy-id –i ~/.ssh/id_rsa.pub root@hadoopdatanode2
这么做的目的是可以不需要密码从hadoopnamenode上ssh到其它三台server上。经过ssh-copy-id后,这个公钥实际上会被添加到其它三台server的~/.ssh/authorized_keys文件中。
例如要从hadoopnamenode登录hadoop2ndnamenode,其流程大概是:hadoop2ndnamenode向hadoopnamenode发送一段随机字符串,hadoopnamenode用自己的私钥加密后,再发回来。hadoop2ndnamenode用事先储存的hadoopnamenode公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。
配置Hadoop:
一般地,我们将使用下面的命令启动hdfs(即name node, secondary name node, data node)及MapReduce:
/usr/local/hadoop/bin/start-dfs.sh
/usr/local/hadoop/bin/start-mapred.sh
start-dfs.sh的流程大概是这样:
- 执行该命令的机器自动成为name node(以及job tracker),
- 启动/usr/local/hadoop/conf /slaves中列出的所有机器并作为data node(以及task tracker),
- 启动/usr/local/hadoop/conf /masters中列出的所有机器并作为secondary name node。
start-mapred.sh的流程类似:
- 执行该命令的机器自动成为job tracker,
- 启动/usr/local/hadoop/conf /slaves中列出的所有机器并作为task tracker
注:conf/masters文件往往给人带来困惑,直观上让人觉得它是为配置name node所用,但是因为(1)的原因,name node是不需要特别配置到conf/masters中,需要配置的只有secondary name node。
根据以上描述,我们可以开始修改hadoopnamenode上的masters文件,删除原内容,添加一行:
hadoop2ndnamenode
修改hadoopnamenode上的slaves文件,删除原内容,添加两行:
hadoopdatanode1
hadoopdatanode2
除此之外,需要在hadoopdatanode1与hadoopdatanode2上作出配置,使得data node知道name node,task tracker知道job tracker。所以分别修改hadoopdatanode1与hadoopdatanode2上的conf/core-site.xml:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoopnamenode:10001</value>
</property>
</configuration>
及conf/mapred-site.xml:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hadoopnamenode:10002</value>
</property>
</configuration>
格式化name node:
在hadoopnamenode上执行:
hadoop namenode -format
启动Hadoop:
首先,在hadoopnamenode上执行下面命令来启动所有name node, secondary name node, data node:
start-dfs.sh
可以使用jps命令在4台server上查看当前运行的java进程,正常情况你会看到:
hadoopnamenode上有进程:NameNode
hadoop2ndnamenode上有进程:SecondaryNameNode
hadoopdatanode1/hadoopdatanode2上有进程:DataNode
其次,在hadoopnamenode上执行下面命令来启动所有job tracker, task tracker:
start-mapred.sh
继续使用jps命令在4台server上查看当前运行的java进程,正常情况你会看到:
hadoopnamenode上有进程:NameNode, JobTracker
hadoop2ndnamenode上有进程:SecondaryNameNode
hadoopdatanode1/hadoopdatanode2上有进程:DataNode, TaskTracker
关闭Hadoop:
在hadoopnamenode上:
stop-mapred.sh
stop-dfs.sh
其它:
Name node管理界面:http://hadoopnamenode:50070/
Job tracker 管理界面:http://hadoopnamenode:50030/
一个4节点Hadoop集群的配置示例的更多相关文章
- 【Big Data】HADOOP集群的配置(一)
Hadoop集群的配置(一) 摘要: hadoop集群配置系列文档,是笔者在实验室真机环境实验后整理而得.以便随后工作所需,做以知识整理,另则与博客园朋友分享实验成果,因为笔者在学习初期,也遇到不少问 ...
- 【Big Data】HADOOP集群的配置(二)
Hadoop集群的配置(二) 摘要: hadoop集群配置系列文档,是笔者在实验室真机环境实验后整理而得.以便随后工作所需,做以知识整理,另则与博客园朋友分享实验成果,因为笔者在学习初期,也遇到不少问 ...
- 基于Docker快速搭建多节点Hadoop集群--已验证
Docker最核心的特性之一,就是能够将任何应用包括Hadoop打包到Docker镜像中.这篇教程介绍了利用Docker在单机上快速搭建多节点 Hadoop集群的详细步骤.作者在发现目前的Hadoop ...
- Hadoop集群的配置(一)
摘要: hadoop集群配置系列文档,是笔者在实验室真机环境实验后整理而得.以便随后工作所需,做以知识整理,另则与博客园朋友分享实验成果,因为笔者在学习初期,也遇到不少问题.但是网上一些文档大多互相抄 ...
- Hadoop的学习前奏(二)——Hadoop集群的配置
前言: Hadoop集群的配置即全然分布式Hadoop配置. 笔者的环境: Linux: CentOS 6.6(Final) x64 JDK: java version "1.7 ...
- hadoop 集群的配置
在经过几天折腾,终于将hadoop环境搭建成功,整个过程中遇到各种坑,反复了很多遍,光虚拟机就重新安装了4.5次,接下来就把搭建的过程详细叙述一下 0.相关工具: 1,系统环境说明: 我这边给出我的集 ...
- Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS
摘自:http://www.powerxing.com/install-hadoop-cluster/ 本教程讲述如何配置 Hadoop 集群,默认读者已经掌握了 Hadoop 的单机伪分布式配置,否 ...
- 从VMware虚拟机安装到hadoop集群环境配置详细说明(第一期)
http://blog.csdn.net/whaoxysh/article/details/17755555 虚拟机安装 我安装的虚拟机版本是VMware Workstation 8.04,自己电脑上 ...
- 三节点Hadoop集群搭建
1. 基础环境搭建 新建3个CentOS6.5操作系统的虚拟机,命名(可自定)为masternode.slavenode1和slavenode2.该过程参考上一篇博文CentOS6.5安装配置详解 2 ...
随机推荐
- php匹配中文代码(字符串中包含中文或者全是中文)
<?php$str= "中文";//全部是汉字的$par = "\x80-\xff";$par2= chr(0xa1).'-'.chr(0xff);//包 ...
- redis队列的实现
redis中文官网:http://www.redis.cn/ 关于redis队列的实现方式有两种: 1.生产者消费者模式. 2.发布者订阅者模式. 详解: 1.生产者消费者模式. 普通版本: 比如一个 ...
- freeCodeCamp:Find the Longest Word in a String
找到提供的句子中最长的单词,并计算它的长度. 函数的返回值应该是一个数字. /* 先把字符串 str 转为数组 myarr 将数组myarr中的每个元素长度转换成一个新的数组newarr 将这个数组按 ...
- Struts2中请求参数的接收方式和ModelDriven机制及其运用
odelDriven 为什么需要ModelDriven 所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象.比如,有实体类User如下: package cn.com.leadfar ...
- oracle安装心得
1.官网下载 oracle 11g r2 2.官网下载的oracle包括两个文件夹file1和file2,需要将解压后的file2中的stage-components文件夹下的内容复制到file1-s ...
- Linux内核实现中断和中断处理(一)
Linux实现中断处理 内核是怎么知道应用程序要调用系统调用的呢?或者说应用程序怎么通知系统内核自己需要执行一个系统调用,这是通过软中断实现的,通过引发一个异常来促使系统切换到内核态去执行异常处理程序 ...
- C# 基础(5)--字符串
Params 可变参数,只能修饰数组,可以传递数组,也可以传递数组的元素. 要抛弃一个异常,可以这样写: Throe new exeception?? 命名空间 不在同一个命名空间下的类,不同直接访问 ...
- 有关pascal的填充语句小技巧
背景 今天打代码,用了一次fillchar(a,sizeof(a),1); 结果a数组(of longint)所赋的值却不是1 探索 ···pascal program fillchartest; v ...
- Young氏矩阵
一个 m x n 的Young氏矩阵是指,每一行数据都是从左到右排好序,每一列的数据也都是从上到下排好序.其中也可能存在一些INF的数据,表示不存在的元素,一个mxn的Young氏矩阵最多用来存放 r ...
- PHP部分字符串函数汇总
PHP部分字符串函数汇总 提交 我的评论 加载中 已评论 PHP部分字符串函数汇总 2015-03-10 PHP100中文网 PHP100中文网 PHP100中文网 微信号 功能介绍 互联网开发者社区 ...