之前转过 一篇文章 ,介绍如何配置伪分布式的Hadoop。不过在Mac上的配置方法和Linux上有一点点区别。另外,本篇还从头介绍了一下创建和运行Hadoop工程的方法。

配置Hadoop

首先确保 java 已经正确安装,最好使用1.6以上的版本, java -version 查看正在使用的版本。把 java 加到 ~/.bash_profile 里。

export JAVA_HOME=`/usr/libexec/java_home`

配置 ssh ,为了简单点儿,使用当前用户账号。需要把密钥文件给自己加上,方便地用 ssh 访问本机。

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# /usr/sbin/sshd        # 有点儿麻烦,需要启动ssh
$ ssh localhost         # 验证一下

以伪分布式安装Hadoop。把Hadoop下载下来,解压放到比如 /usr/local/ 下,加到环境变量里:

PATH="$PATH:/usr/local/hadoop/bin"

改一下用户,以便后面可以在自己的账号下启动它:

# chown -R yeolar:admin /usr/local/hadoop

Hadoop需要个临时目录:

$ mkdir /tmp/hadoop
$ chmod 777 /tmp/hadoop

配置Hadoop的环境变量,在 /usr/local/hadoop/conf/hadoop-env.sh 中:

export JAVA_HOME=`/usr/libexec/java_home`
export HADOOP_OPTS="-Djava.security.krb5.realm=OX.AC.UK -Djava.security.krb5.kdc=kdc0.ox.ac.uk:kdc1.ox.ac.uk"   # Mac需要这个

修改一些配置文件:

/usr/local/hadoop/conf/core-site.xml:

<property><name>hadoop.tmp.dir</name><value>/tmp/hadoop</value><description>A base for other temporary directories.</description>
</property><property><name>fs.default.name</name><value>hdfs://localhost:54310</value><description>The name of the default file system.  A URI whosescheme and authority determine the FileSystem implementation.  Theuri's scheme determines the config property (fs.SCHEME.impl) namingthe FileSystem implementation class.  The uri's authority is used todetermine the host, port, etc. for a filesystem.</description>
</property>

/usr/local/hadoop/conf/mapred-site.xml:

<property><name>mapred.job.tracker</name><value>localhost:54311</value><description>The host and port that the MapReduce job tracker runsat.  If "local", then jobs are run in-process as a single mapand reduce task.</description>
</property>

/usr/local/hadoop/conf/hdfs-site.xml:

<property><name>dfs.replication</name><value>1</value><description>Default block replication.The actual number of replications can be specified when the file is created.The default is used if replication is not specified in create time.</description>
</property>

格式化HDFS文件系统:

$ hadoop namenode -format

现在就可以通过 start-all.sh 和 stop-all.sh 来启动和停止这个单点集群了。

创建一个Hadoop工程

现在大多用maven创建Java工程。

$ mvn archetype:create -DgroupId=com.yeolar.hmapred -DartifactId=hmapred -DpackageName=com.yeolar.hmapred

默认会创建一个App.java,把它删掉,然后把Hadoop源代码里面的WordCount.java复制过来,改一下 package 。

我们还要在pom.xml中加上Hadoop依赖:

<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-core</artifactId><version>1.1.1</version>
</dependency>

现在在工程的根目录就可以编译打包了:

$ mvn clean compile
$ mvn package

maven首次会自动下载依赖,需要一些时间。

如果想把maven工程转换为eclipse工程,可以执行 mvn eclipse:eclipse 。同时还要在Preferences/Java/Build Path/Classpath Variables中添加变量 M2_REPO = /Users/yeolar/.m2/repository 。

运行Hadoop任务

运行普通的Java包可以使用命令 java -cp <jar file> <class> ,不过Hadoop有它自己的方式。

首先,确保Hadoop已经启动,如果还没有,使用 start-all.sh 启动起来。

然后把要处理的文档放到HDFS里面:

$ hadoop dfs -put doc.txt ~

运行Hadoop任务:

$ hadoop jar target/hmapred-1.0-SNAPSHOT.jar com.yeolar.hmapred.WordCount doc.txt out

可以合并取出输出的结果( -getmerge ),或者直接查看( -cat )。

Mac上运行第一个Hadoop实例相关推荐

  1. python mac可以运行win不能运行_Pymssql程序可以在mac上运行,但不能在windows上运行...

    我有一段代码,如果我在mac上运行这个程序(MBA运行mavericks),它的工作原理就像一个符咒.如果我将代码移动到windows box(windows server 2008 R2 64位), ...

  2. 别只关注M1芯片的苹果笔记本,iOS APP支持在 Mac上运行也是大事

    将会在当地时间 11 月 10 日(北京时间 11 月 11 日凌晨 2 点)在 Apple Park 举办发布会,这是苹果在本年度秋季举行的第三次发布会,App Store 上似乎透露出发布会的蛛丝 ...

  3. 什么是“ parentalcontrolsd”,为什么它在我的Mac上运行?

    Something called parentalcontrolsd is running on your Mac-at least, that's what you found when you c ...

  4. 都有哪些应用程序可以在M1 Mac上运行?

    如果您有幸使用新的M1 Mac,或者考虑购买一台Mac,您会想知道您需要使用的应用程序是否可以在其中运行. 苹果公司拥有Rosetta 2-一种用于翻译用于英特尔处理器的代码的工具,以便M1芯片可以理 ...

  5. 如何在M1 Mac上运行iOS应用?

    苹果最新的MacBook Air,MacBook Pro和Mac Mini进行了重要的更改:它们都使用了苹果自己的硅M1处理器.得益于该创新芯片,iOS和MacOS应用程序的融合向前迈出了一大步. 这 ...

  6. Parallels 16已可在支持Windows的M1 Mac上运行

    Parallels Desktop 16 被称为macOS上最强大的虚拟机软件,可以在 Mac 下同时模拟运行 Win.Linux.Android 等多种操作系统及软件而不必重启电脑,并能在不同系统间 ...

  7. mac 不受信任在哪里更改_什么是受信任的,为什么它可以在Mac上运行?

    mac 不受信任在哪里更改 So you found something called trustd running on your Mac, and are now wondering if it ...

  8. 什么是云,为什么它可以在Mac上运行?

    You might have noticed something named cloudd running on your Mac while using Activity Monitor. Shou ...

  9. 什么是“ backupd”,为什么它在我的Mac上运行?

    You notice a process named "backupd" while using Activity Monitor. What is this process, a ...

最新文章

  1. 【跃迁之路】【678天】程序员高效学习方法论探索系列(实验阶段435-2018.12.23)...
  2. Winform 系统调优
  3. leetcode 53.最大子序和
  4. adb打开网页_adb命令打开手机设置页面
  5. Delphi XE5 for Android (十一)
  6. python - 内置函数
  7. 虚拟机VM10装Mac OS X 10.9.3
  8. 稳压二极管的工作原理及稳压二极管使用电路图
  9. Lora入门(1)—— PingPong测试(CubeMX篇)
  10. iOS平台游戏安全之IPA破解原理及防御
  11. PostgreSQL表增加一列或删除一列
  12. 如何用Go语言创建WebSocket服务
  13. runHiC分析HiC_seq数据
  14. 月桂酸异丙酯(IPL)行业调研报告 - 市场现状分析与发展前景预测
  15. 【loadrunner】——利用loadrunner进行压力测试
  16. 计算机知识科普策划方案,中国科普博览--中国优秀文化网站、全国优秀科普网站...
  17. 笔记-动物病理(3:脱水)
  18. CF手游自动挂机刷擎天觉醒魂(1)
  19. 说说淘宝和中小卖家的未来
  20. 《Insect pest image detection and recognition based on bio-inspired methods》翻译

热门文章

  1. 【错误记录】Mac 中 IntelliJ IDEA 运行 Python 程序报错 ( pip 21.0 will drop support for Python 2.7 in January 20 )
  2. 【错误记录】发布 Flutter 插件包报错 ( It‘s strongly recommended to include a “homepage“ or “repository“ field )
  3. 【OkHttp】Android 项目导入 OkHttp ( 配置依赖 | 配置 networkSecurityConfig | 配置 ViewBinding | 代码示例 )
  4. 【Kotlin】变量简介 ( 可空类型 | lateinit | 初始化判定 | 非空类型 | !! 与 ? 修饰符 | ?= ?. ?: 运算符 | 抽象属性变量)
  5. 数据方面高可用方案简单总结
  6. 四种Sandcastle方法生成c#.net帮助类帮助文档
  7. 《从paxos到zookeeper》学习笔记(一)
  8. 十一.安装Redis
  9. 关于ionic的跨域问题
  10. Java 8 简明教程