本文参考:
http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/SingleCluster.html
本篇简要介绍mac下Hadoop的不同运行模式配置及相应模式下运行示例程序。
一、mac下Hadoop本地单节点运行模式配置及程序运行。
首先需要说明的是,Hadoop是一个分布式大数据处理的框架,既然是框架,在配置使用上就和J2EE中的SSH框架类似,只需要做配置即可,不用安装到系统中。
在Hadoop官网页面
http://hadoop.apache.org/releases.html
下载自己中意的Hadoop版本(运行的话需要下载binary版本而不是source版本)。
由于Hadoop使用Java编写的,所以要运行Hadoop程序需要mac中安装jdk。
在mac下,jdk默认安装地址一般为
/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
要是不太清楚安装路径的话,可以运行一下命令查找:
sudo find / -name java
编辑Hadoop目录下的etc/hadoop/hadoop-env.sh,添加jdk安装路径和Hadoop解压缩后的路径
# set to the root of your Java installation
export JAVA_HOME=/usr/java/latest
# Assuming your installation directory is /usr/local/hadoop
export HADOOP_PREFIX=/usr/local/hadoop
设置完成,运行Hadoop目录里命令
bin/hadoop
就可以看到该命令的使用说明文档,这时则说明单节点模式下Hadoop的配置是正确的(Hadoop的默认运行模式就是本地单节点模式),是可以运行的,下面就在单节点模式下运行Hadoop自带的示例程序:
第一步:建立一个目录,这里假设目录名称为input,并把Hadoop目录下etc/hadoop/*.xml拷贝到input目录中。
第二步:运行如下命令
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output 'dfs[a-z.]+'
注意在上述命令中output目录不能存在,否则会运行错误,因为Hadoop在默认模式下,不会覆盖已经存在的目录。
第三步:运行命令
cat output/*
就可以看到Hadoop自带的示例程序的运行结果
1 dfsmetrics
1 dfsadmin
二、mac下伪分布运行模式配置及程序运行
第一步:修改配置文件etc/hadoop/core-site.xml,增加内容
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
第二步:修改配置文件etc/hadoop/hdfs-site.xml,增加内容
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
第三步:配置在terminal中运行ssh localhost时不用输入密码
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
到现在为止,Hadoop伪分布运行模式已配置完成。下面在伪分布模式下运行Hadoop自带的示例程序:
第一步:建立Hadoop文件系统
$ bin/hdfs namenode -format
注意:当运行Hadoop的系统网络环境(最简单的一种是主机IP地址发生改变)发生变化时,需要重新运行上述命令,否则会导致namenode节点无法启动,并且出现网络拒绝连接异常。
第二步:启动Hadoop NameNode和DataNode节点:
$ sbin/start-dfs.sh
第三步:(1)确认NameNode是否启动,在浏览器地址栏输入:
http://localhost:50070/
此时可以访问NameNode的概览页面,在该页面的Utilities菜单里可以查看Hadoop文件系统中都有哪些文件及目录,此时文件系统中已改为空。
在Hadoop HDFS doc中NameNode and DataNode each run an internal web server in order to display basic information about the current status of the cluster. With the default configuration, the NameNode front page is at http://namenode-name:50070/. It lists the DataNodes in the cluster and basic statistics of the cluster. The web interface can also be used to browse the file system (using "Browse the file system" link on the NameNode front page).
(2)确认Jobtracker是否启动成功,在浏览器地址栏输入:
http://localhost:50030/
在mapred-default.xml中属性mapreduce.jobtracker.http.address默认value:0.0.0.0:50030,解释:The job tracker http server address and port the server will listen on. If the port is 0 then the server will start on a free port.
第四步:建立运行Hadoop自带示例程序的目录
$ bin/hdfs dfs -mkdir /user
$ bin/hdfs dfs -mkdir /user/<username>
第五步:拷贝本地文件到Hadoop文件系统中
$ bin/hdfs dfs -put etc/hadoop input
第六步:运行程序
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output 'dfs[a-z.]+'
第七步:在Hadoop文件系统中查看运行结果
$ bin/hdfs dfs -cat output/*
第八步:关闭Hadoop NameNode和DataNode节点
$ sbin/stop-dfs.sh
到目前为止已成功在Hadoop伪分布模式下成功运行程序。
Hadoop配置成功,下面就可以在Hadoop下开发应用程序了!