您的位置:首页 > 运维架构

Mac OS X Yosemite安装Hadoop 2.6记录

2016-02-18 11:35 405 查看
整个安装过程分为四部分:

一. 安装Homebrew

二. ssh localhost

三. 安装Hadoop已经进行配置文件设置 (伪分布式)

四. 运行栗子

一. 安装Homebrew

采用Homebrew安装Hadoop非常简洁方便,之前在Windows上Cygwin上安装过Hadoop,感觉好麻烦。

关于Homebrew可以查看其官网 http://brew.sh/ 也可以查看Homebrew
新一代OS X套件管理工具 一文。

[plain] view
plain copy







$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
然后将上面一行命令复制到终端执行就安装完成了。

二. ssh localhost

因为安装hadoop需要远程登入的功能,所以需要安装ssh工具。 Mac OS X只需在“系统偏好设置”的“共享”的“远程登录”勾选就可以使用ssh了。

ssh的更多可以查看 SSH原理与应用 一文。

如果没有生成过ssh公钥,就使用命令: (查看 ~/.ssh/id_dsa
和~/.ssh/id_dsa.pub存不存在就知道之前有没有生成过公钥,或者直接执行ssh
localhost看能否成功)

[plain] view
plain copy







$ ssh-keygen -t rsa -P ""

$ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

后面的命令是为了将自己的公钥存到对方的公钥保存文件夹中, 这是为了避免每次执行ssh localhost进行远程登入的时候都要输入密码。

三. 安装hadoop 因为就在自己的一台电脑,所以就采用伪分布式模式。

[plain] view
plain copy







<span style="font-size:18px;">$ brew install hadoop</span>

hadoop 就安装成功了,当然这样安装的最新稳定版, 我安装时最新为2.6。 hadoop将按预定的路径安装。

下面就是配置文件的修改了:


hadoop-env.sh

文件在/usr/local/Cellar/hadoop/2.6.0/libexec/etc/hadoop/hadoop-env.sh


export
HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true"[/code]

修改为

exportHADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc="

编辑 Core-site.xml

/usr/local/Cellar/hadoop/2.6.0/libexec/etc/hadoop/core-site.xml

<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/Cellar/hadoop/hdfs/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>


注: fs.default.name 保存了NameNode的位置,HDFS和MapReduce组件都需要用到它,这就是它出现在core-site.xml 文件中而不是 hdfs-site.xml文件中的原因

编辑 mapred-site.xml 可能文件名为 mapred-site.xml.templete , 改不改名字都可以。

/usr/local/Cellar/hadoop/2.6.0/libexec/etc/hadoop/mapred-site.xml
刚开始是空白的文件

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9010</value>
</property>
</configuration>


变量mapred.job.tracker 保存了JobTracker的位置,因为只有MapReduce组件需要知道这个位置,所以它出现在mapred-site.xml文件中。

编辑 hdfs-site.xml

/usr/local/Cellar/hadoop/2.6.0/libexec/etc/hadoop/hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>


变量dfs.replication指定了每个HDFS数据库的复制次数。 通常为3, 由于我们只有一台主机和一个伪分布式模式的DataNode,将此值修改为1。

至此,配置文件编辑完毕。

接下来是进到
hadoop 的安装目录 /usr/local/Cellar/hadoop/2.6.0/sbin

然后执行 ./start-dfs.sh 和 ./start-yarn.sh 就可以启动 Hadoop了。 不过这里会出现一个 警告:WARN
util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 这对Hadoop的运行没有影响,关于这个警告后面再讲。

为了启动Hadoop的时候避免每次都首先进到安装目录,然后再执行./start-dfs.sh 和 ./start-yarn.sh这么麻烦,所以在编辑 ~/.profiles文件,加上如下两行:

alias hstart="/usr/local/Cellar/hadoop/2.6.0/sbin/start-dfs.sh;/usr/local/Cellar/hadoop/2.6.0/sbin/start-yarn.sh"
alias hstop="/usr/local/Cellar/hadoop/2.6.0/sbin/stop-yarn.sh;/usr/local/Cellar/hadoop/2.6.0/sbin/stop-dfs.sh"

然后执行 $ source ~/.profile 更新。 这样可以就可以用 hstart 和 hstop 这两个简单明了启动Hadoop了。

不过在启动hadoop之前要先格式化 hdfs

$ hadoop namenode -format

这时就可以用hstart启动hadoop了。 可以使用 jps 命令验证 Hadoop是否在运行。

四. 运行栗子

安装完了之后肯定想看看能不能使用,hadoop自带了一个例子。$
hadoop jar <path to the hadoop-examples file> pi 10 100

$ hadoop jar /usr/local/Cellar/hadoop/2.3.0/libexec/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.3.0.jar pi 2 5

得到的结果可能是这样的:

Wrote input for Map #0
Wrote input for Map #1
Starting Job
...
Job Finished in 1.685 seconds
Estimated value of Pi is 3.60000000000000000000


然后可以通过Web端进行监控。
Resource Manager: http://localhost:50070
JobTracker: http://localhost:8088 Specific Node Information: http://localhost:8042[/code] 通过他们可以访问 HDFS filesystem, 也可以取得结果输出文件.

注: 前文提到的 警告
是关于 Hadoop 本地库的, Hadoop本地库是为了提高效率或者某些不能用Java实现的功能组件库。目前只支持 *unix, 在Mac OS X和Cygwin上没有支持的。native
hadoop library

不过我看到一篇文章说也可以在Mac
OS X支持本地库,其解决方法是 Mac
OSX 下 Hadoop 使用本地库提高效率
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: