Hadoop平台配置总结
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
开启后要等一段时间使服务完全启动,否则命令将没有响应。具体什么时候完全启动可以查看
- http://localhost:50030/ – web UI for MapReduce job tracker(s)
- http://localhost:50060/ – web UI for task tracker(s)
- 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平台配置总结的更多相关文章
- Hadoop平台配置汇总
Hadoop平台配置汇总 @(Hadoop) Hadoop hadoop-env.sh和yarn-env.sh中export log和pid的dir即可和JAVA_HOME. core-site.xm ...
- 大数据Hadoop平台安装及Linux操作系统环境配置
配置 Linux 系统基础环境 查看服务器的IP地址 设置服务器的主机名称 hostnamectl set-hostname hadoop hostname可查看 绑定主机名与IP 地址 vim /e ...
- 高可用Hadoop平台-Flume NG实战图解篇
1.概述 今天补充一篇关于Flume的博客,前面在讲解高可用的Hadoop平台的时候遗漏了这篇,本篇博客为大家讲述以下内容: Flume NG简述 单点Flume NG搭建.运行 高可用Flume N ...
- 大数据Hadoop学习之搭建hadoop平台(2.2)
关于大数据,一看就懂,一懂就懵. 一.概述 本文介绍如何搭建hadoop分布式集群环境,前面文章已经介绍了如何搭建hadoop单机环境和伪分布式环境,如需要,请参看:大数据Hadoop学习之搭建had ...
- Hadoop平台基本组成
1.Hadoop系统运行于一个由普通商用服务器组成的计算集群上,能提供大规模分布式数据存储资源的同时,也提供了大规模的并行化计算资源. 2.Hadoop生态系统 3.MapReduce并行计算框架 M ...
- 高可用Hadoop平台-Oozie工作流之Hadoop调度
1.概述 在<高可用Hadoop平台-Oozie工作流>一篇中,给大家分享了如何去单一的集成Oozie这样一个插件.今天为大家介绍如何去使用Oozie创建相关工作流运行与Hadoop上,已 ...
- 高可用Hadoop平台-Hue In Hadoop
1.概述 前面一篇博客<高可用Hadoop平台-Ganglia安装部署>,为大家介绍了Ganglia在Hadoop中的集成,今天为大家介绍另一款工具——Hue,该工具功能比较丰富,下面是今 ...
- 高可用Hadoop平台-Ganglia安装部署
1.概述 最近,有朋友私密我,Hadoop有什么好的监控工具,其实,Hadoop的监控工具还是蛮多的.今天给大家分享一个老牌监控工具Ganglia,这个在企业用的也算是比较多的,Hadoop对它的兼容 ...
- 高可用Hadoop平台-HBase集群搭建
1.概述 今天补充一篇HBase集群的搭建,这个是高可用系列遗漏的一篇博客,今天抽时间补上,今天给大家介绍的主要内容目录如下所示: 基础软件的准备 HBase介绍 HBase集群搭建 单点问题验证 截 ...
随机推荐
- 【 D3.js 高级系列 】 总结
高级系列的教程已经完结,特此总结. 月初的时候曾说过本月内完结高级教程,今天是最后一天,算是可以交差了.O(∩_∩)O~ 如此一来,[入门]-[进阶]-[高级]三个系列的教程算是完成了.本教程的目的在 ...
- tomcat调优的几个方面
转载自:http://my.oschina.net/u/593721/blog/146710 作者:小报童 和早期版本相比最新的Tomcat提供更好的性能和稳定性.所以一直使用最新的Tomcat版本. ...
- 【JS】<a>标签调用js中函数的几种方法
我们常用的在a标签中有点击事件: a href="javascript:js_method();" 这是我们平台上常用的方法,但是这种方法在传递this等参数的时候很容易出问题,而 ...
- Eclipse小技巧<一>
Eclipse是一款特别好用的开源开发工具,基于插件的特性使其能够进行各种语言的开发.非常喜欢eclipse里的编码风格,感觉这个开发工具十分灵活,又有很多开发的小技巧能够提高开发效率,每次学到一个t ...
- 反转链表 --剑指offer
题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反正后链表的头结点. #include<stdio.h> #include<malloc.h> typedef str ...
- 扩展Fitnesse的ScriptTable:支持if-then
Fitnesse的ScriptTable只能顺序执行所有行,本博文介绍如何让ScriptTable支持if-then,来条件执行一行. 首先普及一下概念,什么是Fitnesse,听一听.NET版Cuc ...
- ASP.NET 日期 时间 年 月 日 时 分 秒 格式及转换
在平时编码中,经常要把日期转换成各种各样的形式输出或保持,今天专门做了个测试,发现DateTime的ToString()方法居然有这么多的表现形式,和大家一起分享. DateTime time=Dat ...
- web服务器分析与设计(一)
自己写一个简单的服务器. 面向对象分析与设计第一步:获取需求(基于用例) 功能:1,支持html静态网页,2,支持常用HTTP请求,且容易扩展支持不现请求 3,可以发布站点 补充:至于对动态网页等高级 ...
- C++ 我想这样用(三)
话接前篇,继续谈在C++环境下使用C风格编程时的注意点: 6.关于原型的声明 在C里,调用一个未声明的函数是允许的,但是在C++里,必须先声明才能调用函数.另外,如果函数的参数是空的,那么在c里面是未 ...
- 在Windows上,如何卸载RabbitMQ服务
打开运行->CMD->sc delete RabbitMQ 如果报错..... 打开运行->regedit 找到RabbitMQ节点,删掉即可.(右侧看到的都是启动服务时,需要的配置 ...