Mac上运行第一个Hadoop实例

之前转过 一篇文章 ,介绍如何配置伪分布式的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 whose
  scheme and authority determine the FileSystem implementation.  The
  uri's scheme determines the config property (fs.SCHEME.impl) naming
  the FileSystem implementation class.  The uri's authority is used to
  determine 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 runs
  at.  If "local", then jobs are run in-process as a single map
  and 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 )。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值