对这两天学习hadoop的一个总结,概念就不提了。直接说部署的事,关于如何部署hadoop网上的资料很多, 比较经典的还是Tim在IBM developworks上的系列文章
可能是大牛在写文章的时候把一些常识性的东西给省略了。使我这样的菜鸟在照猫画虎的时候费了不少周章,下面慢慢说吧。首先是真实分布式系统的架构:
主从模式的架构是比较常见的。如果要做水平扩展,通过添加从节点就可以实现计算能力与存储能力扩容。但要实现这样的部署模式还需要做几件事:
以下所有的命令和配置都是在Ubuntu上操作的,不同的Linux系统或许有些许的区别
1. 创建单机的hadoop模板,参考:http://www.ibm.com/developerworks/cn/linux/l-hadoop-1/index.html。这里唯一需要注意的是一些坑,如创建用户与组,设置临时目录等。这些大牛的文章里都没写,但还是要配置的。以下是坑列表:
搭建一个伪分布式的hadoop环境,遇到的第一个问题是JAVA_HOME没设置。Hadoop是用Java开发的,所以对Java的环境依赖比较严重。所以需要先配置一下Java。

Oracle JDK和Open JDK都可以。唯一需要注意的是Oracle JDK已经不被Ubuntu的官方repository支持了,安装麻烦些。Open JDK直接执行: sudo apt-get install openjdk-6-jdk

安装完后,要设置JAVA_HOME的环境变量:
sudo gedit /etc/environment
然后添加
CLASSPATH=./:/usr/lib/jvm/java-6-openjdk/lib
JAVA_HOME=/usr/lib/jvm/java-6-openjdk
PATH添加:/usr/lib/jvm/java-6-openjdk
或者
修改hadoop-env.sh文件,添加export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64/ 遇到的第二个问题是hadoop运行权限的问题,hadoop默认的namenode服务是不允许以root用户运行的,所以必须新建一个用户来运行。命令:
sudo addgroup hadoopgroup
sudo adduser --ingroup hadoop hadoop
sudo chmod +w /etc/sudoers
sudo vim /etc/sudoers
添加配置:
在root ALL=(ALL) ALL后 hadoop ALL=(ALL) ALL使hadoop用户具有root权限
再运行格式化命令:hadoop-0.20 namenode -format时,又遇到了“Create directory”的错误,
问题是cache目录的权限不对,那么就修改一下权限sudo chown hadoop:hadoopgroup cache 运行 hadoop-0.20 namenode -format,输出成功信息。 接下来运行hadoop-0.20 fs -ls /遇到了第三个问题连接The authenticity of host can't be
established 这个问题是因为ssh的设置导致的,通过修改/etc/ssh/ssh_config,在文件尾添加:
StrictHostKeyChecking no
UserKnownHostsFile /dev/null 今天遇到了第四个坑,就是重启机器后启动hadoop服务失败。尝试着去重新格式化namenode,也失败。错误信息如下: Format aborted in /home/hadoop/dfs/name 后来查看了一下网上的解决方案,原来是如果要重新格式化namenode必须先将原来的namenode文件夹删除先。我的路径是/usr/lib/hadoop-0.20/cache/hadoop/。然后,再重新格式化,重新启动服务就可以了。还有就是用户权限的问题,最好的办法就是将所有与hadoop相关的文件夹权限都设置成hadoop用户所有。 第五个坑是wordcount程序哪里找。网上和文章里都没找到大牛的jar文件。经过一番搜索,原来hadoop自带了一个,那就是在hadoop的安装目录下有一个hadoop-examples.jar文件。这个就可以用来统计word。
2. 配置hosts文件,这里就看出了系统的不同之处了。Tim的文章里写的是这样
master 192.168.108.133
slave1 192.168.108.134
slave2 192.168.108.135
但是在Ubuntu里应该是这样:
192.168.108.133   master
192.168.108.134 slave1
192.168.108.135 slave2 
3. 配置无密码登陆从master节点到slave节点,做法是先在master节点上生成空密码的key,然后拷贝到slave节点上。
ssh-keygen -t rsa 然后一路回车
cat ~/.ssh/id_rsa.pub >> authorized_keys
拷贝authorized_keys文件到slave机器的~/.ssh/文件夹下。这里要注意的是master节点和slave节点都必须是 同名用户操作,这个用户也是hadoop的服务用户。
然后在slave机器上就该文件权限: chmod 644 ~/.ssh/authorized_keys,否则也是不工作的。如果你发现ssh的认证比较慢,请修改/etc/ssh/ssh_config文件,将GSSAPIAuthentication yes改为no。
4. 修改hadoop的配置文件,这个就不详写的,大牛的文章里也都有。唯一需要注意的是,创建自己的临时目录,并更新到core-site.xml文件中。
<property>
     <name>hadoop.tmp.dir</name>
     <value>/app/hadoop/tmp</value>
</property>
注意,这里的/app/hadoop/tmp目录必须改成hadoop用户的权限。

5. 按照大牛文章里面的步骤,格式namenode,启动hadoop服务。这里要注意的是这些步骤都是在master节点上操作的,因为hadoop是通过可信ssh方式让master与slave沟通的。这也是为什么要配置无密码登陆的目的。如果一切顺利,恭喜你的第一个分布式大数据计算框架已经搭建成功。
注意:
你可能会跟我一样犯二的时候,不小心把core-site.xml里面的"fs.default.name"写错了。那么你就会得到"Invalid URI for NameNode address"的异常信息。 最后要说的是,上面的架构图是hadoop 1.0的。2.0现在已经把job tracker给干掉了,由于性能和单点失效的原因,已经换了架构。不过对于初学者来说,1.0就已经够了。

Hadoop从伪分布式到真正的分布式的更多相关文章

  1. Hadoop:Hadoop单机伪分布式的安装和配置

    http://blog.csdn.net/pipisorry/article/details/51623195 因为lz的linux系统已经安装好了很多开发环境,可能下面的步骤有遗漏. 之前是在doc ...

  2. hadoop搭建伪分布式集群(centos7+hadoop-3.1.0/2.7.7)

    目录: Hadoop三种安装模式 搭建伪分布式集群准备条件 第一部分 安装前部署 1.查看虚拟机版本2.查看IP地址3.修改主机名为hadoop4.修改 /etc/hosts5.关闭防火墙6.关闭SE ...

  3. Hadoop开发第3期---Hadoop的伪分布式安装

    一.准备工作 1. 远程连接工具的安装 PieTTY 是在PuTTY 基础上开发的,改进了Putty 的用户界面,提供了多语种支持.Putty 作为远程连接linux 的工具,支持SSH 和telne ...

  4. Hadoop之伪分布式安装

    一.Hadoop的安装模式有3种 ①单机模式:不能使用HDFS,只能使用MapReduce,所以单击模式主要用于测试MR程序. ②伪分布式模式:用多个线程模拟真实多台服务器,即模拟真实的完全分布式环境 ...

  5. Hadoop的单机模式、伪分布式模式和完全分布式模式

    1.单机(非分布式)模式 这种模式在一台单机上运行,没有分布式文件系统,而是直接读写本地操作系统的文件系统. 2.伪分布式运行模式 这种模式也是在一台单机上运行,但用不同的Java进程模仿分布式运行中 ...

  6. Hadoop 3.1.2 下载安装和分布式搭建的准备

    官方有详细文档:https://hadoop.apache.org/docs/r3.1.2/hadoop-project-dist/hadoop-common/SingleCluster.html 我 ...

  7. Hadoop生态圈-flume日志收集工具完全分布式部署

    Hadoop生态圈-flume日志收集工具完全分布式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   目前为止,Hadoop的一个主流应用就是对于大规模web日志的分析和处理 ...

  8. 沉淀,再出发——在Ubuntu Kylin15.04中配置Hadoop单机/伪分布式系统经验分享

    在Ubuntu Kylin15.04中配置Hadoop单机/伪分布式系统经验分享 一.工作准备 首先,明确工作的重心,在Ubuntu Kylin15.04中配置Hadoop集群,这里我是用的双系统中的 ...

  9. Hadoop单点伪分布模式安装

    Hadoop单点伪分布模式安装 概述 单点 single-node,单节点,即一台计算机. 伪分布式模式 pseudo-distributed mode 所谓集群,表面上看是多台计算机联合完成任务:但 ...

  10. 云时代的分布式数据库:阿里分布式数据库服务DRDS

    发表于2015-07-15 21:47| 10943次阅读| 来源<程序员>杂志| 27 条评论| 作者王晶昱 <程序员>杂志数据库DRDS分布式沈询 摘要:伴随着系统性能.成 ...

随机推荐

  1. NodeJS+Mongodb+Express做CMS博客系统

    楼主正在用业余时间开发中-- ,目前的版本仅支持会员系统,尝鲜一下吧~ hi-blog 一个 nodejs+express+mongodb 的 cms 系统 怎么启动 默认你已经安装了 mongodb ...

  2. TOGAF:企业信息化复杂吗?

    本文更新版本已挪至:http://www.zhoujingen.cn/blog/2666.html -------------------- 在与人交流TOGAF的时候,离不开企业信息化,而信息化又离 ...

  3. Spring基础——在Spring Config 文件中配置 Bean

    一.基于 XML 的 Bean 的配置——通过全类名(反射) <bean <!-- id: bean 的名称在IOC容器内必须是唯一的若没有指定,则自动的将全限定类名作为 改 bean 的 ...

  4. 《构建之法》第8、9、10章的读后感和第一个sprint总结

    第八章——主要介绍软件需求. 主要步骤:1.获取和引导需求.2.分析和定义需求.3.验证需求.4.在软件产品的生命周期中管理需求. 对软件需求的划分:1.对产品功能性的需求.2.对产品开发过程的需求. ...

  5. 构建之法 第6~7章读后感和对Scrum的理解

    第六章-敏捷流程 第六章主要详细介绍了敏捷流程,在软件工程范畴里,“敏捷流程”是一系列价值观和方法论的集合.这一章以敏捷流程的Scrum方法论而展开,而敏捷流程的精髓就是在于快速的交付. 敏捷开发的流 ...

  6. Sql Server来龙去脉系列 必须知道的权限控制核心篇

    最近写了<Sql Server来龙去脉系列  必须知道的权限控制基础篇>,感觉反响比较大.这可能也说明了很多程序猿对数据库权限控制方面比较感兴趣,或者某些技术点了解的没有很透彻. 有些人看 ...

  7. SQL Server视图复习

    视图的好处: 第一点:使用视图,可以定制用户数据,聚焦特定的数据. 第一点:使用视图,可以定制用户数据,聚焦特定的数据. 在实际过程中,公司有不同角色的工作人员,我们以销售公司为例的话,采购人员,可以 ...

  8. jQuery回调函数

    1.引言 今天在学习<jQuery基础教程>在学习编写插件的时候,书中说利用回调函数来当参数,会极大的提高程序的灵活性.对回调函数很陌生.研究了一下给的示例程序.感觉对回调函数有了基本的了 ...

  9. Visual Studio《加载此属性页时出错》的解决办法

    打开aspx页面时不能切换到设计视图,vs 2008工具箱中无控件.打开vs 2008的工具>选项>HTML设计器时提示:加载此属性页时出错 有时还会有其它错误提示,比如打开一个Windo ...

  10. C#方法的六种参数,值参数、引用参数、输出参数、参数数组、命名参数、可选参数

    方法的参数有六种,分别是值参数.引用参数.输出参数.参数数组.命名参数.可选参数. 值参数 值参数是方法的默认类型,通过复制实参的值到形参的方式把数据传递到方法,方法被调用时,系统作两步操作: 在栈中 ...