Hadoop 2.0安装以及不停集群加datanode
Hadoop2.0是对Hadoop1.0全面升级,针对Namenode单点问题,提出了HDFS Federation,让多个NameNode分管不同的目录进而实现访问隔离和横向扩展。诞生了通用的计算框架YARN,YARN系统的引入使得计算框架进入了平台化时代,从云计算分层概念上讲,YARN可看做PAAS层,很多计算框架或者应用程序不再基于传统的操作系统开发,而是基于YARN这个云操作系统。典型的代表是DAG计算框架Tez,当然还有一些其他知名的自运行的计算集群系统也在YARN上有开源版本,比如Storm-on-yarn,Spark-on-yarn。我们先安装一个Hadoop2.0环境,作为一切的开始。
单机环境中,Hadoop有伪分布式模式,即“单点集群”,在该模式下,所有的守护进程均会运行在单个节点上。
伪分布式模式安装好了之后,继续动态加datanode,然后就是完全分布式的hadoop
希望了解hadoop2.0的改进以及设计的亮点可以看这篇博文,HADOOP2.0(HDFS2)以及YARN设计的亮点
本文的hadoop版本是2.2.0,源码以及编译包的获取地址:http://hadoop.apache.org/releases.html
[root@localhost hadoop]# pwd
/root/hadoop
[root@localhost hadoop]# ls
hadoop-2.2. hadoop-2.2..tar.gz
[root@localhost hadoop]# cd hadoop-2.2.
[root@localhost hadoop-2.2.]# ls
bin etc include lib libexec LICENSE.txt logs NOTICE.txt README.txt sbin share
步骤1 修改配置文件
修改Hadoop配置文件 ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh,这个根据实际情况修改,不过java7好像不太兼容,我这边使用java6
export JAVA_HOME=/usr/lib/jvm/java-1.6.-openjdk-1.6.0.0.x86_64
然后修改conf目录下的mapred-site.xml,core-site.xml,yarn-site.xml和hdfs-site.xml四个文件,省略了最外围的<configuration></configuration>
<!-- mapred-site.xml -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- core-site.xml -->
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.12.67:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop-tmp</value>
<!-- 设置一个不会被linux定期删除的文件夹,默认情况下namenode和datanode的文件都会存在这个目录下 -->
</property>
<!-- yarn-site.xml -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<!-- 2.2版本中不支持中划线‘-’这边用下划线 -->
</property>
<!-- hdfs-site.xml -->
<property>
<name>dfs.replication</name>
<value></value>
<!-- 默认情况下,hdfs数据块的副本数是3,在集群规模小于3的集群中,默认参数会导致错误,所以调整为1 -->
</property>
修改/etc/hosts,把本机hostname从原来的127.0.0.1修改为本机ip
192.168.12.67 localhost
修改${HADOOP_HOME}/etc/hadoop/slaves
192.168.12.67
步骤2 设置免密码登录
#生成免密码公密钥对,然后把公钥加入自己的授权文件中,完成本机对本机的免密码登录
ssh-keygen -t rsa
cd ~/.ssh/
cat id_ras.pub >> authorized_keys
步骤3 启动Hadoop
格式化HDFS
./bin/hadoop namenode -format
启动HDFS
cd $HADOOP_HOME
./sbin/start-dfs.sh
启动YARN
cd $HADOOP_HOME
./sbin/start-yarn.sh
通过以下URL可查看YARN是否启动成功: http://192.168.12.67:8088/

jps可以看到运行的进程
[root@localhost hadoop-2.2.]# jps
SecondaryNameNode
Jps
DataNode
NodeManager
NameNode
ResourceManager
可以把hadoop的执行脚本加入PATH,这样方便以后直接调用hadoop脚本,具体就是修改/etc/profile文件,然后source /etc/profile生效
export PATH=$PATH:/root/hadoop/hadoop-2.2.0/bin
运行下hadoop脚本,就可以看到hdfs的文件系统了
[root@localhost hadoop-2.2.]# hadoop fs -ls
hadoop提供了一个跑在yarn上的示例,可以运行
hadoop jar share/hadoop/yarn/hadoop-yarn-applications-distributedshell-2.2..jar org.apache.hadoop.yarn.applications.distributedshell.Client --jar share/hadoop/yarn/hadoop-yarn-applications-distributedshell-2.2..jar --shell_command ls --num_containers --container_memory --master_memory --priority
显示hadoo上正在运行的作业
hadoop job -list
完全分布式安装,动态加datanode机器
伪分布式安装完成,下面试试完全分布式安装(就是动态加datanode场景)、
这里我随便找了两台机器,把新加两台机器hostname dns解析加入namenode机器的/etc/hosts中,所有新加的机器的/etc/hosts上都要同步这个配置。否则有datanode无法连接到namenode exception
192.168.1.57 yhserver 192.168.24.33 rhel6
修改${HADOOP_HOME}/etc/hadoop/slaves,加入新机器两台
192.168.1.57
192.168.24.33
注意,我在加加机器的时候规范了下hdfs-site.xml配置文件,把namenode文件和datanode文件,指定相应的目录,当然这样改了之后,就需要重新做namenode格式化的操作了。如果一开始就规范好了,就可以不停下namenode,直接加datanode了。默认没有配置,就是在hadoop.tmp目录下,各建立dfs name目录保存相应文件。
<property>
<name>dfs.namenode.name.dir</name>
<value>/hadoop/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/hadoop/dfs</value>
</property>
然后往新加的两台机器上,同步hadoop工程以及配置文件,然后设置免密码登录新加的两台机器,然后新加的机器上,各自单独执行
./sbin/hadoop-daemon.sh start datanode
然后就可以看到新加的两个datanode生效了

问题汇总
error: org.apache.hadoop.hdfs.server.protocol.DisallowedDatanodeException: Datanode denied communication with namenode
datanode无法连接到namenode,是因为没有在所有机器的/etc/hosts,配置好hostname ip对应关系。配置好了,重启就可以。
FATAL org.apache.hadoop.yarn.server.nodemanager.containermanager.AuxServices: Failed to initialize mapreduce_shuffle
java.lang.RuntimeException: No class defiend for mapreduce_shuffle
at org.apache.hadoop.yarn.server.nodemanager.containermanager.AuxServices.init(AuxServices.java:)
at org.apache.hadoop.yarn.service.CompositeService.init(CompositeService.java:)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.ContainerManagerImpl.init(ContainerManagerImpl.java:)
at org.apache.hadoop.yarn.service.CompositeService.init(CompositeService.java:)
at org.apache.hadoop.yarn.server.nodemanager.NodeManager.init(NodeManager.java:)
at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:)
at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:)
FATAL org.apache.hadoop.yarn.server.nodemanager.NodeManager: Error starting NodeManager
java.lang.RuntimeException: No class defiend for mapreduce_shuffle
at org.apache.hadoop.yarn.server.nodemanager.containermanager.AuxServices.init(AuxServices.java:)
at org.apache.hadoop.yarn.service.CompositeService.init(CompositeService.java:)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.ContainerManagerImpl.init(ContainerManagerImpl.java:)
at org.apache.hadoop.yarn.service.CompositeService.init(CompositeService.java:)
at org.apache.hadoop.yarn.server.nodemanager.NodeManager.init(NodeManager.java:)
at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:)
at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:)
不同版本间参数名称不一样,修改yarn-site.xml文件
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>mapreduce_shuffle</value>
</property>
参考
《Hadoop技术内幕-深入解析YARN架构设计与实现原理》
DAG计算框架Tez:http://tez.incubator.apache.org/
"Storm On YARN" Yahoo!开源: https://github.com/yahoo/storm-yarn
"Spark On YARN":http://spark.apache.org/docs/0.9.0/running-on-yarn.html
Hadoop 2.0安装以及不停集群加datanode的更多相关文章
- Hadoop 3.0 安装
1. 下载Hadoop 3.0 http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.0.0/hadoop-3. ...
- hadoop 2.0安装及HA配置简述
一.单机模式 a.配置本机到本机的免密登录 b.解压hadoop压缩包,修改hadoop.env.sh中的JAVA_HOME c.修改core-site.xml <configuration&g ...
- Hadoop 2.0 安装配置
1. install jdk 2. install hadoop. 安装包hadoop-2.2.0.tar.gz存放在一个目录.并解压. 3. 修改配置文件,一般配置文件在/etc/hadoop下面. ...
- Hadoop2.2.0安装配置手册!完全分布式Hadoop集群搭建过程~(心血之作啊~~)
http://blog.csdn.net/licongcong_0224/article/details/12972889 历时一周多,终于搭建好最新版本hadoop2.2集群,期间遇到各种问题,作为 ...
- Hadoop2.6.0安装 — 集群
文 / vincentzh 原文连接:http://www.cnblogs.com/vincentzh/p/6034187.html 这里写点 Hadoop2.6.0集群的安装和简单配置,一方面是为自 ...
- Sqoop安装与使用(sqoop-1.4.5 on hadoop 1.0.4)
1.什么是Sqoop Sqoop即 SQL to Hadoop ,是一款方便的在传统型数据库与Hadoop之间进行数据迁移的工具,充分利用MapReduce并行特点以批处理的方式加快数据传输,发展至今 ...
- Hadoop 3.1.2(HA)+Zookeeper3.4.13+Hbase1.4.9(HA)+Hive2.3.4+Spark2.4.0(HA)高可用集群搭建
目录 目录 1.前言 1.1.什么是 Hadoop? 1.1.1.什么是 YARN? 1.2.什么是 Zookeeper? 1.3.什么是 Hbase? 1.4.什么是 Hive 1.5.什么是 Sp ...
- CentOS 7安装Hadoop 3.0.0
最近在学习大数据,需要安装Hadoop,自己弄了好久,最后终于弄好了.网上也有很多文章关于安装Hadoop的,但总会遇到一些问题,所以把在CentOS 7安装Hadoop 3.0.0的整个过程记录下来 ...
- [转] Hadoop 2.0 详细安装过程
1. 准备 创建用户 useradd hadoop passwd hadoop 创建相关的目录 定义代码及工具存放的路径 mkdir -p /home/hadoop/source mkdir -p / ...
随机推荐
- Mybatis 学习笔记1
---恢复内容开始--- 什么是 MyBatis ? MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获 ...
- Xcode常用代码块
Xcode的代码片段(Code Snippets)创建自定义的代码片段,当你重用这些代码片段时,会给你带来很大的方便. 常用的: 1.strong:@property (nonatomic,stron ...
- 环信SDK集成
利用环信SDK可以实现即时通讯,但在集成的过程中碰到了不少的坑. 注意 选择项目路径,这里以最新版环信demo为例 注意:环信的ChatDemoUI这个demo里边因为研发的同事为了照顾老版本的And ...
- Android -- View setScale, setTranslation 对View矩阵的处理
参考: 1.Android Matrix理论与应用详解 2.2D平面中关于矩阵(Matrix)跟图形变换的讲解 3.Android中关于矩阵(Matrix)前乘后乘的一些认识 4.Android Ma ...
- openfire 服务器名称:后面的黄色叹号
然后点击重新获取证书,然后重新启动服务,问题解决!
- jQuery ajax同步的替换方法,使用 $.Deferred()对象
function aa() { var defer = $.Deferred(); $.ajax({ url: "/Handler1.ashx", type: "post ...
- 基于MyEclipse6.5的ssh整合
1.编写目的 为了学习,为了更好的学习java. 为了让想要学习这个整合的人少走弯路! ! ! 2.实验环境 l MyEclipse6.5 l JBoss4.2.1 l SQL2005 l 数据库脚本 ...
- LSM-Tree (BigTable 的理论模型)(转)
Google的BigTable架构在分布式结构化存储方面大名鼎鼎,其中的MergeDump模型在读写之间找到了一个较好的平衡点,很好的解决了web scale数据的读写问题. MergeDump的理论 ...
- 【leetcode】Candy
题目描述: There are N children standing in a line. Each child is assigned a rating value. You are giving ...
- ubuntu wubi非在线快速安装
最近ubuntu更新了,就想把它重新装回来试一下,但是由于种种原因划分磁盘不太方便,很自然就想到了wubi,这个不仅仅安全性高,而且比直接装系统快多了,而且方便.但是在线安装实在是太慢了,所以就找到了 ...