Hadoop笔记之安装及伪分布式模式配置
Hadoop推荐的是Linux环境。Windows环境只能作为开发环境,而不能作为生产环境。
准备工作
首先确保Java环境的安装,并确保JAVA_HOME环境变量指向了一个Java安装。ubuntu下可以
sudo apt-get install sun-java6-jdk
通过运行“java -version”命令查看是否配置成功。
接着在这里下载一个稳定版的hadoop,目前最新的版本为0.20.203.x。
下载后,解压缩到本地文件系统。
tar xvzf hadoop-x.f.z.tar.gz
这时我们需要修改conf/hadoop-env.sh中的JAVA_HOME的值来指定Java安装。
创建一个指向hadoop安装目录(例如HADOOP_INSTALL)的环境变量。这样直接在命令行中运行hadoop命令就很方便。
export HADOOP_INSTALL=/home/chine/hadoop-0.20.203.0
export PATH=$PATH:$HADOOP_INSTALL/bin
为了能让每次开机添加环境变量,我们把这两句话加到"/etc/profile“的末尾。
我们运行以下指令看看hadoop是否安装成功。
% hadoop version
Hadoop 0.20.203.0
Subversion http://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20-security-203 -r 1099333
Compiled by oom on Wed May 4 07:57:50 PDT 2011
配置
Hadoop各个组件的配置在文件夹conf下。早期的hadoop采用一个配置文件hadoop-site.xml来配置Common,HDFS和MapReduce组件,从0.20.0版本开始,分为三个文件。
- core-site.xml:配置Common组件的属性。
- hdfs-site.xml:配置HDFS属性。
- mapred-sit.xml:配置MapReduce属性。
Hadoop的运行模式有以下三种:
- 独立模式(standalone或local mode):无需任何守护进程(daemon),所有程序都在单个JVM上执行。主要用在开发阶段。默认属性就是为本模式所设,所以不需要额外的配置。
- 伪分布式模式(pseudo-distributed model):Hadoop守护进程运行在本地机器上,模拟一个小规模的集群。本文接下来会说这种模式的配置。
- 全分布模式(full distributed model):Hadoop守护进程运行在一个集群上。在以后的文章中将会介绍此模式的配置。
伪分布模式
我们依次修改conf文件下core-site.xml,hdfs-site.xml和mapred-site.xml文件为如下。
core-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost/</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/chine/hadoop-0.20.203.0/tmp/hadoop-${user.name}</value> </property> </configuration>
这里要注意hadoop.tmp.dir的设置,如果不设置,则默认设为/tmp文件夹,每次重启后/tmp会被清除,这样造成namenode无法启动的问题。
hdfs-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
mapred-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>mapred.job.tracker</name> <value>localhost:8021</value> </property> </configuration>
配置SSH
启动守护进程的前提是安装SSH。通常情况下,ubuntu已经安装了ssh,若没有,运行
sudo apt-get install ssh
需要强调的是,必须确保用户能SSH到本地主机,并不输入密码即可登录。于是,我们基于空口令创建一个新SSH密钥,以启用无密码登录。
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
用以下命令进行测试
$ ssh localhost
如果成功,无需键入密码。
格式化HDFS文件系统
在使用Hadoop之前,必须格式化一个全新的HDFS安装。只需运行
$ hadoop namenode -format
启动和终止守护进程
我们可以运行以下命令来启动HDFS和MapReduce守护进程。
$ start-all.sh
当然,也可以分开来分别启动
$ start-dfs.sh
$ start-mapred.sh
相应的终止也很简单。
$ stop-all.sh
或者
$ stop-dfs.sh
$ stop-mapred.sh
到这里伪分布式模式就配置完成。以后再介绍全分布式模式的配置,以及用Hadoop进行MapReduce任务等等相关的学习。
恩,为什么我的评论提交不了?
不明白什么意思,这不是提交成功了么?
求问大神:hadoop安装配置都正常,在eclipse里运行WordCount也正常,但是,进入job页面(localhost:50030),显示running job和retired job 均为none,是什么问题啊??
我在stackoverflow上找到一个类似的问题:http://stackoverflow.com/questions/15594159/why-there-are-no-job-running-on-hadoop 你可以参考一下。
额,其实吧,那个问题就是我问的。。。。还是没有解决。。。。
你试试把程序打成jar包运行看看呢?
已经打成jar包了,还是查不到job运行状态。。。
你说的问题我没遇到过。不过我尝试着运行了一下,运行的时候是在running jobs里有运行的job的,完成之后能在completed jobs里看到完成的job。
至于你为什么在web interface里看不到。你的hadoop是配置在什么模式下的?
是单机伪分布式,配置文件与你的这篇文章几乎一致。我刚刚给你的链接里说要把jar也上传再运行,有点看不懂,也不知道怎么操作。
你好
我在网上搜到一个解决方案,是把jar上传到某个目录,但看得不是太懂。
http://www.linuxidc.com/Linux/2012-06/61788.htm
终于解决了。应该用命令hadoop jar runnable.jar inputPath outputPath.我之前在jar前加了一小横-jar,于是就悲剧了。
谢谢你的耐心解答哈!看你的资料是上交软院啊!不错不错!我是南大软院的,正好选修了MapReduce课程,希望能交个朋友哈!
好呀,咱们以后多交流。我的各种联系方式页面下方都有。
给作者留言
关于作者
残阳似血(@秦续业),程序猿一枚,把梦想揣进口袋的挨踢工作者。现加入阿里云,研究僧毕业于上海交通大学软件学院ADC实验室。熟悉分布式数据分析(DataFrame并行化框架)、基于图模型的分布式数据库和并行计算、Dpark/Spark以及Python web开发(Django、tornado)等。
博客分类
搜索
点击排行
标签云
扫描访问
主题
残阳似血的微博
登录