设为首页 收藏本站
查看: 943|回复: 0

[经验分享] Hadoop学习笔记-入门伪分布式配置(Mac OS,0.21.0,Eclipse 3.6)

[复制链接]

尚未签到

发表于 2016-5-17 11:20:09 | 显示全部楼层 |阅读模式
说实话,Hadoop的入门学习配置比我想像中的要简单,当然,Hadoop本身是比较复杂的(那么厚厚的一本书就能说明问题)。
开发环境:Mac OS(Unix)
Hadoop版本:0.21.0
Eclipse版本: 3.6.0
第一步:下载Hadoop
下载地址:http://hadoop.apache.org/common/releases.html#Download
注意,当前21版本的Hadoop是不稳定、不支持并且不保证安全的最新版本。
第二步:配置Hadoop
将下载的Hadoop压缩文件解压缩,找到conf目录,打开core-site.xml,修改代码如下所示:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>localhost:9000</value>
</property>
</configuration>


找到mapred-site.xml修改代码如下所示:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>


找到hdfs-site.xml修改代码如下所示:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>


找到hadoop-env.sh打开,加入以下配置
引用

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
export HADOOP_INSTALL=/Users/alex/Documents/DevRes/hadoop-0.21.0
export PATH=$PATH:$HADOOP_INSTALL/bin


其中,具体的目录根据你的实际情况配置。

第二步:配置SSH
windows版本可安装openssh,本章主要介绍Mac OS,打开“系统偏好设置”,找到共享,勾选远程登录,如下图所示:
DSC0000.png
第三步:运行Hadoop
打开终端,定位到Hadoop目录输入以下命令:
bin/hadoop namenode -format
此时终端输出:
引用

DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.
11/09/04 21:19:38 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = localhost/127.0.0.1
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 0.21.0
STARTUP_MSG:   classpath = /Users/alex/documents/devres/hadoop-0.21.0/bin/../conf:/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/lib/tools.jar:/Users/alex/documents/devres/hadoop-0.21.0/bin/..:/Users/alex/documents/devres/hadoop-0.21.0/bin/../hadoop-common-0.21.0.ja

.........省略若干

STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.21 -r 985326; compiled by 'tomwhite' on Tue Aug 17 01:02:28 EDT 2010
************************************************************/
11/09/04 21:19:39 INFO namenode.FSNamesystem: defaultReplication = 1
11/09/04 21:19:39 INFO namenode.FSNamesystem: maxReplication = 512
11/09/04 21:19:39 INFO namenode.FSNamesystem: minReplication = 1
11/09/04 21:19:39 INFO namenode.FSNamesystem: maxReplicationStreams = 2
11/09/04 21:19:39 INFO namenode.FSNamesystem: shouldCheckForEnoughRacks = false
11/09/04 21:19:39 INFO security.Groups: Group mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping; cacheTimeout=300000
11/09/04 21:19:39 INFO namenode.FSNamesystem: fsOwner=alex
11/09/04 21:19:39 INFO namenode.FSNamesystem: supergroup=supergroup
11/09/04 21:19:39 INFO namenode.FSNamesystem: isPermissionEnabled=true
11/09/04 21:19:39 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)
11/09/04 21:19:39 INFO common.Storage: Image file of size 110 saved in 0 seconds.
11/09/04 21:19:39 INFO common.Storage: Storage directory /tmp/hadoop-alex/dfs/name has been successfully formatted.
11/09/04 21:19:39 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at localhost/127.0.0.1
************************************************************/


然后输入bin/start-all.sh
在启动期间会多次要求输入密码(你机器的登录密码)
此时终端输出:
引用

This script is Deprecated. Instead use start-dfs.sh and start-mapred.sh
starting namenode, logging to /Users/alex/documents/devres/hadoop-0.21.0/bin/../logs/hadoop-alex-namenode-localhost.out
Password:
localhost: starting datanode, logging to /Users/alex/documents/devres/hadoop-0.21.0/bin/../logs/hadoop-alex-datanode-localhost.out
Password:
localhost: starting secondarynamenode, logging to /Users/alex/documents/devres/hadoop-0.21.0/bin/../logs/hadoop-alex-secondarynamenode-localhost.out
starting jobtracker, logging to /Users/alex/documents/devres/hadoop-0.21.0/bin/../logs/hadoop-alex-jobtracker-localhost.out
Password:
localhost: starting tasktracker, logging to /Users/alex/documents/devres/hadoop-0.21.0/bin/../logs/hadoop-alex-tasktracker-localhost.out


第四步:检查启动
打开连接地址http://localhost:50070
如果找不到页面,请查看log日志(在hadoop目录中的log文件夹下),否则应当会看到以下页面:
DSC0001.png
然后再打开地址http://localhost:50030/
应当能看到以下页面(如果看不到,则证明你的jobtracker启动失败,请查看log):
DSC0002.png
至此,Hadoop配置成功。
第五步:测试
将一个文件拷贝到HDFS中,打开终端定位到Hadoop目录,输入以下命令:
bin/hadoop fs -copyFromLocal [源文件] [目标地址]
比如我输入的是:
bin/hadoop fs -copyFromLocal /Users/alex/desktop/persons.rtf hdfs://localhost/tmp/hadoop-alex
此时终端会输出以下文字:
引用

11/09/04 21:23:45 INFO security.Groups: Group mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping; cacheTimeout=300000
11/09/04 21:23:45 WARN conf.Configuration: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id


这样代表成功。

第六步:配置Eclipse
首先找到目录hadoop-0.21.0/mapred/contrib/eclipse-plugin,然后将里面的eclipse-plugin复制到你的Eclipse的plugin文件夹中。
注意,如果该插件无法使用,本文下方有提供。如果还不能使用,请尝试在网络上寻找。
此时打开Eclipse,在Open Perspective中选择其它,找到Map/Reduce视图,打开它。
此时你会发现在Project Explorer和下面的视图中多了一个DFS Locations,右键新建Location如下图所示:
DSC0003.png
此时会打开一个窗口,对其进行配置,端口号就是我们刚才在core-site.xml中配置的端口好,既9000,如下图所示:
DSC0004.png
点击确定后即可在左边的Project Explorer面板中对DFS Location进行展开,如下图所示:
DSC0005.png
第六步:在Eclipse中写代码
在Map/Reduce视图中新建一个Map/Reduce项目(该项目与普通Java项目没什么区别),新建一个Java类,该类主要用于读取我们前面复制到HDFS中的那个文件内容:

package cn.com.fri;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URISyntaxException;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileContext;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.security.AccessControlException;
public class Test {
public static void main(String[] args) throws AccessControlException,
FileNotFoundException, IOException, URISyntaxException {
FileContext fc = FileContext
.getFileContext();//如果运行在hadoop location中,不需要配置URI,否则需要给一个URI
FSDataInputStream fsInput = fc.open(new Path(
"/tmp/hadoop-alex/persons.rtf"));
IOUtils.copyBytes(fsInput, System.out, 4090, false);
fsInput.seek(0);
IOUtils.copyBytes(fsInput, System.out, 4090, false);
}
}

然后右键->Run As->Run on hadoop,此时会让你选择一个location,就选中我们刚才新建的location即可。
因为我用了seek并给了一个位置,所以会打印两遍结果如下:
引用

11/09/04 22:32:33 WARN conf.Configuration: DEPRECATED: hadoop-site.xml found in the classpath. Usage of hadoop-site.xml is deprecated. Instead use core-site.xml, mapred-site.xml and hdfs-site.xml to override properties of core-default.xml, mapred-default.xml and hdfs-default.xml respectively
11/09/04 22:32:33 WARN conf.Configuration: fs.default.name is deprecated. Instead, use fs.defaultFS
11/09/04 22:32:33 INFO security.Groups: Group mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping; cacheTimeout=300000
11/09/04 22:32:33 WARN conf.Configuration: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id
{\rtf1\ansi\ansicpg936\cocoartf1038\cocoasubrtf360
{\fonttbl\f0\fnil\fcharset134 STHeitiSC-Light;}
{\colortbl;\red255\green255\blue255;}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}{\leveltext\leveltemplateid1\'02\'00.;}{\levelnumbers\'01;}\fi-360\li720\lin720 }{\listname ;}\listid1}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}}
\paperw11900\paperh16840\margl1440\margr1440\vieww11680\viewh11900\viewkind0
\pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\li720\fi-720\ql\qnatural\pardirnatural
\ls1\ilvl0
\f0\fs24 \cf0 {\listtext1.}\'d0\'ec\'d6\'f9\'a3\'ac\
{\listtext2.}\'c0\'ee\'cf\'fe\'c0\'f2\'a3\'ac\
{\listtext3.}\'d5\'d4\'d6\'f9\'a3\'ac\
{\listtext4.}\'d6\'ec\'b9\'e3\'b7\'ef\'a3\'ac\
{\listtext5.}\'d0\'bb\'c0\'e8\'c0\'e8\'a3\'ac\
{\listtext6.}\'d6\'ec\'ce\'b0\'a3\'ac\
{\listtext7.}\'d5\'c5\'b5\'a4\'b5\'a4\'a3\'ac\
{\listtext8.}\'c0\'ee\'b5\'a4\'a3\'ac\
{\listtext9.}\'b2\'b7\'ce\'c4\'c4\'c8\'a3\'ac\
{\listtext10.}\'d6\'dc\'ca\'ab\'a3\'ac\
{\listtext11.}\'d5\'d4\'cd\'ee\'b6\'ab\'a3\'ac\
{\listtext12.}\'b9\'f9\'b7\'ad\'b5\'dc\'a3\'ac\
{\listtext13.}\'cc\'c6\'be\'fc\'b2\'a8\'a3\'ac\
{\listtext14.}\'b8\'df\'cf\'e8\'a3\'ac\
{\listtext15.}\'d1\'a6\'c3\'cd\'a3\'ac\
{\listtext16.}\'ba\'fa\'b3\'a4\'ba\'d8\'a3\'ac\
{\listtext17.}\'c0\'ee\'c7\'bf\'a3\'ac\
{\listtext18.}\'c0\'ee\'bb\'d4\'a3\'ac\
{\listtext19.}\'c8\'ce\'c5\'f4\'a3\'ac\
{\listtext20.}\'d7\'db\'bc\'d2\'c7\'ed\'a3\'ac\
{\listtext21.}\'b6\'a1\'d1\'de\'a3\'ac\
{\listtext22.}\'b6\'ad\'c1\'c1\'a3\'ac\
{\listtext23.}\'c3\'ab\'ba\'ec\'a3\'ac\
{\listtext24.}\'c5\'ed\'c7\'e5\'d4\'b4\'a3\'ac\
{\listtext25.}\'c3\'cf\'c7\'ec\'bf\'c2\'a3\'ac\
{\listtext26.}\'c0\'ee\'b7\'e5\'a3\'ac\
{\listtext27.}\'c2\'ed\'c1\'d6\'a3\'ac\
{\listtext28.}\'b3\'c9\'b3\'cc\'a3\'ac\
{\listtext29.}\'b7\'b6\'c9\'dc\'b4\'a8\'a3\'ac\
{\listtext30.}\'c4\'aa\'b7\'bc\'a3\'ac\
{\listtext31.}\'b6\'a1\'cc\'ce\'a3\'ac\
{\listtext32.}\'b6\'c5\'d3\'b0\'a3\'ac\
{\listtext33.}\'c0\'ee\'b7\'ef\'a3\'ac\
{\listtext34.}\'ba\'ab\'c3\'f7\'c3\'f7\'a3\'ac\
{\listtext35.}\'c9\'f2\'cf\'fe\'c0\'f6\'a3\'ac\
{\listtext36.}\'d0\'ed\'b3\'c9\'a3\'ac\
{\listtext37.}\'d5\'d4\'d5\'f1\'a3\'ac\
{\listtext38.}\'c2\'de\'be\'b2\'a3\'ac\
{\listtext39.}\'b6\'c5\'d3\'b0\'a3\'ac\
{\listtext40.}\'d6\'ec\'b7\'ef\'a3\'ac\
{\listtext41.}\'cb\'e5\'c0\'f6\'a3\'ac\
{\listtext42.}\'ba\'fa\'d1\'f4\'d1\'f4\'a3\'a8\'ba\'fa\'d5\'f1\'a3\'a9\'a3\'ac\
{\listtext43.}\'c2\'ed\'cf\'fe\'c3\'b7\
{\listtext44.}\'b5\'cb\'b1\'f3\'a3\'ac\
{\listtext45.}\'cf\'ee\'c3\'ce\'e9\'aa\'a3\'ac\
{\listtext46.}\'d1\'ee\'c1\'f8\'a3\'ac\
{\listtext47.}\'b8\'f0\'ea\'bb\
}{\rtf1\ansi\ansicpg936\cocoartf1038\cocoasubrtf360
{\fonttbl\f0\fnil\fcharset134 STHeitiSC-Light;}
{\colortbl;\red255\green255\blue255;}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}{\leveltext\leveltemplateid1\'02\'00.;}{\levelnumbers\'01;}\fi-360\li720\lin720 }{\listname ;}\listid1}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}}
\paperw11900\paperh16840\margl1440\margr1440\vieww11680\viewh11900\viewkind0
\pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\li720\fi-720\ql\qnatural\pardirnatural
\ls1\ilvl0
\f0\fs24 \cf0 {\listtext1.}\'d0\'ec\'d6\'f9\'a3\'ac\
{\listtext2.}\'c0\'ee\'cf\'fe\'c0\'f2\'a3\'ac\
{\listtext3.}\'d5\'d4\'d6\'f9\'a3\'ac\
{\listtext4.}\'d6\'ec\'b9\'e3\'b7\'ef\'a3\'ac\
{\listtext5.}\'d0\'bb\'c0\'e8\'c0\'e8\'a3\'ac\
{\listtext6.}\'d6\'ec\'ce\'b0\'a3\'ac\
{\listtext7.}\'d5\'c5\'b5\'a4\'b5\'a4\'a3\'ac\
{\listtext8.}\'c0\'ee\'b5\'a4\'a3\'ac\
{\listtext9.}\'b2\'b7\'ce\'c4\'c4\'c8\'a3\'ac\
{\listtext10.}\'d6\'dc\'ca\'ab\'a3\'ac\
{\listtext11.}\'d5\'d4\'cd\'ee\'b6\'ab\'a3\'ac\
{\listtext12.}\'b9\'f9\'b7\'ad\'b5\'dc\'a3\'ac\
{\listtext13.}\'cc\'c6\'be\'fc\'b2\'a8\'a3\'ac\
{\listtext14.}\'b8\'df\'cf\'e8\'a3\'ac\
{\listtext15.}\'d1\'a6\'c3\'cd\'a3\'ac\
{\listtext16.}\'ba\'fa\'b3\'a4\'ba\'d8\'a3\'ac\
{\listtext17.}\'c0\'ee\'c7\'bf\'a3\'ac\
{\listtext18.}\'c0\'ee\'bb\'d4\'a3\'ac\
{\listtext19.}\'c8\'ce\'c5\'f4\'a3\'ac\
{\listtext20.}\'d7\'db\'bc\'d2\'c7\'ed\'a3\'ac\
{\listtext21.}\'b6\'a1\'d1\'de\'a3\'ac\
{\listtext22.}\'b6\'ad\'c1\'c1\'a3\'ac\
{\listtext23.}\'c3\'ab\'ba\'ec\'a3\'ac\
{\listtext24.}\'c5\'ed\'c7\'e5\'d4\'b4\'a3\'ac\
{\listtext25.}\'c3\'cf\'c7\'ec\'bf\'c2\'a3\'ac\
{\listtext26.}\'c0\'ee\'b7\'e5\'a3\'ac\
{\listtext27.}\'c2\'ed\'c1\'d6\'a3\'ac\
{\listtext28.}\'b3\'c9\'b3\'cc\'a3\'ac\
{\listtext29.}\'b7\'b6\'c9\'dc\'b4\'a8\'a3\'ac\
{\listtext30.}\'c4\'aa\'b7\'bc\'a3\'ac\
{\listtext31.}\'b6\'a1\'cc\'ce\'a3\'ac\
{\listtext32.}\'b6\'c5\'d3\'b0\'a3\'ac\
{\listtext33.}\'c0\'ee\'b7\'ef\'a3\'ac\
{\listtext34.}\'ba\'ab\'c3\'f7\'c3\'f7\'a3\'ac\
{\listtext35.}\'c9\'f2\'cf\'fe\'c0\'f6\'a3\'ac\
{\listtext36.}\'d0\'ed\'b3\'c9\'a3\'ac\
{\listtext37.}\'d5\'d4\'d5\'f1\'a3\'ac\
{\listtext38.}\'c2\'de\'be\'b2\'a3\'ac\
{\listtext39.}\'b6\'c5\'d3\'b0\'a3\'ac\
{\listtext40.}\'d6\'ec\'b7\'ef\'a3\'ac\
{\listtext41.}\'cb\'e5\'c0\'f6\'a3\'ac\
{\listtext42.}\'ba\'fa\'d1\'f4\'d1\'f4\'a3\'a8\'ba\'fa\'d5\'f1\'a3\'a9\'a3\'ac\
{\listtext43.}\'c2\'ed\'cf\'fe\'c3\'b7\
{\listtext44.}\'b5\'cb\'b1\'f3\'a3\'ac\
{\listtext45.}\'cf\'ee\'c3\'ce\'e9\'aa\'a3\'ac\
{\listtext46.}\'d1\'ee\'c1\'f8\'a3\'ac\
{\listtext47.}\'b8\'f0\'ea\'bb\
}


rtf中存放的是中文。
==============文章结束=============
今天所学习到的地方就到这里。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-218199-1-1.html 上篇帖子: Java获取本机MAC地址和IP 下篇帖子: Mac系统常用软件总结
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表