对这两天学习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. 轻松了解Spring中的控制反转和依赖注入(一)

    我们回顾一下计算机的发展史,从最初第一台计算机的占地面积达170平方米,重达30吨,到现如今的个人笔记本,事物更加轻量功能却更加丰富,这是事物发展过程中的一个趋势,在技术领域中同样也是如此,企业级Ja ...

  2. 更加优雅地配置Spring Securiy(使用Java配置和注解)

    Spring Security 借助一系列Servlet Filter 来提供安全性功能,但是借助Spring的小技巧,我们只需要配置一个Filer就可以了,DelegatingFilterProxy ...

  3. 安装percona-xtrabackup一直提示依赖冲突的一个解决办法

    我的Mysql是5.6版本,通过自己下载的rpm包执行安装: yum instal percona-xtrabackup-2.1.7-721.rhel6.x86_64.rpm 会出现如下的安装错误提示 ...

  4. springMVC中Dispatcher中的/和/*的区别

    1. 首先 / 这个是表示默认的路径,及表示:当没有找到可以匹配的URL就用这个URL去匹配.2. 在springmvc中可以配置多个DispatcherServlet,比如: 配置多个Dispatc ...

  5. Do not to test a private method.

    If you want to unit test a private method, something may be wrong. Unit tests are (generally speakin ...

  6. 加密–RSA前端与后台的加密&解密

    1. 前言 本问是根据网上很多文章的总结得到的. 2. 介绍 RSA加密算法是一种非对称加密算法. 对极大整数做因数分解的难度决定了RSA算法的可靠性.换言之,对一极大整数做因数分解愈困难,RSA算法 ...

  7. 重新想象 Windows 8.1 Store Apps (86) - 系统 UI 的新特性: Theme, 窗口宽度大小可变, ApplicationView, DisplayInformation

    [源码下载] 重新想象 Windows 8.1 Store Apps (86) - 系统 UI 的新特性: Theme, 窗口宽度大小可变, ApplicationView, DisplayInfor ...

  8. MyEclipse8.6安装SVN 教程 与遇到的问题

    按网上的多种方式都不好用     最后这种好用 了! 写此文做记录. MyEclipse版本:8.6 SVN版本:1.6.9 MyEclipse版本要对应SVN版本.否则会出错. 教程: 1.下载最新 ...

  9. python爬虫——爬取NUS-WIDE数据库图片

    实验室需要NUS-WIDE数据库中的原图,数据集的地址为http://lms.comp.nus.edu.sg/research/NUS-WIDE.htm   由于这个数据只给了每个图片的URL,所以需 ...

  10. ahjesus Unity3D XML注释被编译的问题

    public class XMLStringReader : MonoBehaviour { public string slectedItem; private bool editing = fal ...