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. Web Api 返回参数,实现统一标准化!

    string camelCaseObj = JsonConvert.SerializeObject(data, Newtonsoft.Json.Formatting.None, new JsonSer ...

  2. h.264码流解析_一个SPS的nalu及获取视频的分辨率

    00 00 00 01 67 42 00 28 E9 00  A0 0B 77 FE 00 02 00 03 C4 80  00 00 03 00 80 00 00 1A 4D 88  10 94 0 ...

  3. [Everyday Mathematics]20150116

    设 $\al_n\geq 0$ 且 $\dps{\vlm{n}\al_n=0}$, 试求 $$\bex \vlm{n}\frac{1}{n}\sum_{k=1}^n \ln\sex{\frac{k}{ ...

  4. bzoj1036: [ZJOI2008]树的统计Count 树链剖分+线段树

    入门题 + 熟悉代码 /************************************************************** Problem: 1036 User: 96655 ...

  5. 软件测试技术(六)——白盒测试之控制流覆盖准则+Visual Studio 2013单元测试

    一.目标程序 单片机发送的A/D转换结果的整体格式为:[DLE][STX]Message[CHKSUM][DLE][ETX],其中[]括号中的字符为16进制的助记符,并非ASCII码.其中:[DLE] ...

  6. css水平居中和垂直居中

    水平居中:内联元素:text-align:center;相对于父级居中显示块级元素:margin:0 auto;但是需要同时width,否则无法看到效果多个块级元素居中:在此想要探讨一下display ...

  7. SVM核函数与软间隔

    核函数 在上文中我们已经了解到使用SVM处理线性可分的数据,而对于非线性数据需要引入核函数的概念它通过将数据映射到高维空间来实现线性可分.在线性不可分的情况下,支持向量机通过某种事先选择的非线性映射( ...

  8. 机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用

    版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...

  9. Unity3D中的Shader

    简单的说,Shader是为渲染管线中的特定处理阶段提供算法的一段代码.Shader是伴随着可编程渲染管线出现的,从而可以对渲染过程加以控制. 1. Unity提供了很多内建的Shader,这些可以从官 ...

  10. mysql的登录密码带特殊符号登录不进去的问题

    eg : mysqldump -u root -p)P:9 ${dbname} > $dataPath$filename 当我将数据库的数据每天进行自动导出时,需要带上密码,但 ) 是一个特殊符 ...