hadoop的配置,个人感觉是非常容易出问题。一个原因是要配置的地方多,还有个原因就是集群配置要在几台机器上都配置正确,才能保证配置好hadoop,跑起任务。

经过昨晚加今天上午的折腾,总算成功配好了集群模式,其中苦不堪言啊,中间好几次都想要放弃。这里总结了一下配置的几个要点,分享给大家,以使大家少走冤枉路。

1.基本配置

安装JDK1.6(这是必须的吧,无须解释)

下载Hadoop包

下载后放在用户主目录下解压

配置JAVA_HOME路径

conf/hadoop-env.sh

# The java implementation to use.  Required.
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun

改为

# The java implementation to use.  Required.
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk

(这里的java具体目录可能会有所不同)

保存并关闭

输入以下命令:

$ bin/hadoop

如果能看到hadoop的程序调用的使用说明,此时说明你已经成功配置好了这部分。(单机模式)

2.集群模式配置

配置好了单机模式后,即可配置集群模式。集群模式的结构是一台master机器+若干台slave机器。

(1)编辑/etc/hosts文件(master,slave都要):

假设master机器:

IP:192.168.0.1        机器名:master

假设slaves机器:

IP:192.168.0.2        机器名:slave1

IP:192.168.0.3        机器名:slave2

IP:192.168.0.4        机器名:slave3

IP:192.168.0.5        机器名:slave4

加入如下项:

# /etc/hosts
192.168.0.1    master
192.168.0.2    slave1

192.168.0.3    slave2

192.168.0.4    slave3

192.168.0.5    slave4

注意:这里的”master“和”slave1“等等均指你的机器名,如在终端中有ubuntu@DY1-U09:~/hadoop$,则DY1-U09为机器名。

(2)在hadoop目录下新建几个文件夹(master,slave都要):

$ mkdir tmp

$ mkdir hdfs

$ mkdir hdfs/name

$ mkdir hdfs/data

(3)在conf目录中,编辑以下文件(目录path/to/your/hadoop为你自己的相应hadoop目录)(master,slave都要):

conf/core-site.xml:

<configuration>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://(你的master机器名):9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/path/to/your/hadoop/tmp</value>
    </property>

</configuration>

conf/hdfs-site.xml:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.name.dir</name>
        <value>/path/to/your/hadoop/hdfs/name</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>/path/to/your/hadoop/hdfs/data</value>
    </property>
</configuration>

conf/mapred-site.xml:

<configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>(你的master机器名):9001</value>
    </property>
</configuration>

(4)SSH Access(仅对master)

master必须能以passless ssh访问slaves

ubuntu@master:~$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub ubuntu@slave1

ubuntu@master:~$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub ubuntu@slave2

ubuntu@master:~$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub ubuntu@slave3

ubuntu@master:~$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub ubuntu@slave4

执行以上的命令都需要输入对方的密码

完成后,可以在master上分别运行:ssh slave1/slave2/slave3/slave4

看是否不需要输入密码,如果不需要则设置正确。

(5)配置conf/masters,conf/slaves(仅对master)

更新conf/masters文件如下:

master

更新conf/slaves文件如下:

slave1

slave2

slave3

slave4

(6)开启集群:

在master上运行:$ bin/start-all.sh

可以在master和slave上运行jps命令,查看开启的daemons:

此时,master机器上应当有namenode,jobtracker,secondarynamenode,

而slave机器上有datanode,tasktracker

开启后要等一段时间使服务完全启动,否则命令将没有响应。具体什么时候完全启动可以查看

  1. http://localhost:50030/ – web UI for MapReduce job tracker(s)
  2. http://localhost:50060/ – web UI for task tracker(s)
  3. http://localhost:50070/ – web UI for HDFS name node(s)

以上的几个网址可以让你获取Hadoop的运行状况信息。当网页可以载入的时候即可。

(7)测试一下:

首先需要Format namenode

(格式化之前最好在所有机器上清空hdfs/data,hdfs/name,以免造成冲突)

在master上运行: $ bin/hadoop namenode -format

在master机器上运行WordCount:

首先在dfs中创建input目录

$ bin/hadoop dfs -mkdir input

将conf中的文件拷贝到dfs中的input:

$ bin/hadoop dfs -copyFromLocal conf/* input

运行WordCount

$ bin/hadoop jar hadoop-0.20.2-examples.jar wordcount input output

显示输出结果文件:

$ bin/hadoop dfs -cat output/*

3.配置过程问题归纳:

(1)dfs可以ls,mkdir,但是copyFromLocal出错,提示could only be replicated to 0 nodes, instead of 1:

这个问题非常容易遇到,而且原因可能也不相同,若出现此问题,请尝试以下步骤:

  使用jps检查master和slave上是否符合:master机器上应当有namenode,jobtracker,secondarynamenode,而slave机器上有datanode,tasktracker。

若不符合请仔细检查master和slave上的/etc/hosts文件、conf/core-site.xml、conf/mapred-site.xml、conf/hdfs-site.xml。

  检查master和slave上的/etc/hosts文件,如果其中有127.0.0.1与你的相应机器名对应的项,请将其删掉,务必保证此文件中对应于你的机器名的ip地址为你在局域网中的ip。

  运行stop-all.sh关闭进程;

  Format namenode(格式化之前最好在所有机器上清空hdfs/data,hdfs/name,以免造成冲突)——在master上运行: $ bin/hadoop namenode -format

  运行start-all.sh开启服务;

  待服务完全开启后测试。

(2)提示处于safemode,报错。

  运行命令bin/hadoop dfsadmin -safemode leave后重试。

(3)其他问题:

  配置过程出错的大部分问题都出在hdfs不能正常使用,具体表现是http://localhost:50070查看namenode显示

Configured Capacity     :     0 KB
DFS Used    :    0 KB
Non DFS Used    :    0 KB
DFS Remaining    :    0 KB
DFS Used%    :    100 %
DFS Remaining%    :    0 %
Live Nodes     :    0
Dead Nodes     :    0

若出现此问题,请仔细检查master和slave上的/etc/hosts文件,以及三个xml配置文件保证没有地方写错,所有机器上都有在hadoop目录执行

$ mkdir tmp

$ mkdir hdfs

$ mkdir hdfs/name

$ mkdir hdfs/data

最后,请大家勇于坚持——”我不会永远失败,正如我不会永远成功“。GoodLuck!

Hadoop平台配置总结的更多相关文章

  1. Hadoop平台配置汇总

    Hadoop平台配置汇总 @(Hadoop) Hadoop hadoop-env.sh和yarn-env.sh中export log和pid的dir即可和JAVA_HOME. core-site.xm ...

  2. 大数据Hadoop平台安装及Linux操作系统环境配置

    配置 Linux 系统基础环境 查看服务器的IP地址 设置服务器的主机名称 hostnamectl set-hostname hadoop hostname可查看 绑定主机名与IP 地址 vim /e ...

  3. 高可用Hadoop平台-Flume NG实战图解篇

    1.概述 今天补充一篇关于Flume的博客,前面在讲解高可用的Hadoop平台的时候遗漏了这篇,本篇博客为大家讲述以下内容: Flume NG简述 单点Flume NG搭建.运行 高可用Flume N ...

  4. 大数据Hadoop学习之搭建hadoop平台(2.2)

    关于大数据,一看就懂,一懂就懵. 一.概述 本文介绍如何搭建hadoop分布式集群环境,前面文章已经介绍了如何搭建hadoop单机环境和伪分布式环境,如需要,请参看:大数据Hadoop学习之搭建had ...

  5. Hadoop平台基本组成

    1.Hadoop系统运行于一个由普通商用服务器组成的计算集群上,能提供大规模分布式数据存储资源的同时,也提供了大规模的并行化计算资源. 2.Hadoop生态系统 3.MapReduce并行计算框架 M ...

  6. 高可用Hadoop平台-Oozie工作流之Hadoop调度

    1.概述 在<高可用Hadoop平台-Oozie工作流>一篇中,给大家分享了如何去单一的集成Oozie这样一个插件.今天为大家介绍如何去使用Oozie创建相关工作流运行与Hadoop上,已 ...

  7. 高可用Hadoop平台-Hue In Hadoop

    1.概述 前面一篇博客<高可用Hadoop平台-Ganglia安装部署>,为大家介绍了Ganglia在Hadoop中的集成,今天为大家介绍另一款工具——Hue,该工具功能比较丰富,下面是今 ...

  8. 高可用Hadoop平台-Ganglia安装部署

    1.概述 最近,有朋友私密我,Hadoop有什么好的监控工具,其实,Hadoop的监控工具还是蛮多的.今天给大家分享一个老牌监控工具Ganglia,这个在企业用的也算是比较多的,Hadoop对它的兼容 ...

  9. 高可用Hadoop平台-HBase集群搭建

    1.概述 今天补充一篇HBase集群的搭建,这个是高可用系列遗漏的一篇博客,今天抽时间补上,今天给大家介绍的主要内容目录如下所示: 基础软件的准备 HBase介绍 HBase集群搭建 单点问题验证 截 ...

随机推荐

  1. angularjs指令中的compile与link函数详解(转)

    http://www.jb51.net/article/58229.htm 通常大家在使用ng中的指令的时候,用的链接函数最多的是link属性,下面这篇文章将告诉大家complie,pre-link, ...

  2. ffmpeg 从内存中读取数据(或将数据输出到内存)

    更新记录(2014.7.24): 1.为了使本文更通俗易懂,更新了部分内容,将例子改为从内存中打开. 2.增加了将数据输出到内存的方法. 从内存中读取数据 ffmpeg一般情况下支持打开一个本地文件, ...

  3. DrawDib函数组的使用

    Microsoft的针对与设备无关位图(DIB位图),在其WIN32 SDK的Multimedia中提供了一组绘制DIB位图的高性能函数组──DrawDib函数组.DrawDib函数组是一组不依赖于图 ...

  4. 【有趣~】SFOJ-1711 Obey的恋爱、NYOJ-739 笨蛋难题

    笨蛋难题四 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 这些日子笨蛋一直研究股票,经过调研,终于发现xxx公司股票规律,更可喜的是 笨蛋推算出这家公司每天的股价, ...

  5. sharepoint SPFolder的使用

    转:http://blog.csdn.net/pclzr/article/details/7591731 SPFolder是SharePoint对象模型中文件夹相关的类,它的使用方法相对比较简单.获取 ...

  6. [Everyday Mathematics]20150108

    设 $f$ 在 $(a,b)$ 上 $n+1$ 次可导, 且 $$\bex \ln\frac{f(b)+f'(b)+\cdots+f^{(n)}(b)}{f(a)+f'(a)+\cdots+f^{(n ...

  7. mysql-5.6.15_winX64在win764位系统下的安装操作步骤总结

      mysql 版权声明:本文为博主原创文章,未经博主允许不得转载. 自从换了新电脑win764位,支持的内存从原来的3G(2G机身+1G内存条)变到了现在的8G(机身4G+4G内存条),机子的速度是 ...

  8. HDU5790 Prefix 字典树+主席树

    分析:这个题和spoj的d_query是一个题,那个是求一段区间里有多少个不同的数字,这里是统计有多少个不同的前缀 用字典树进行判重,(和查询不同的数字一样)对于每个不同的前缀,只保留它最后一次出现的 ...

  9. 修复duilib库UISlider控件的4个bug

    转载级请注明原出处,谢谢~· 昨天封装好一个音频类,我在为dulib做音频播放demo时发现了一些问题,由CSliderUI控件导致的,进而发现了这个控件的好几样不足,他无法满 足我们做一个播放器的进 ...

  10. angular form-data文件上传

    前言:很久没更新博客,最近公司pc端技术选型用angular,这几天就赶鸭子上架,硬着头皮直接上手angular.其中有许多小坑陆陆续续踩起走.今天就遇到一个比较常见的问题:图片上传. 主题:图片上传 ...