配置SSH免密码登录环境(Linux看文末):

进入系统偏好设置 --> 共享 --> 勾选远程登录复选框,并允许所有人访问:

远程访问

打开终端,在里面输入:ssh localhost 回车,输入密码并确认,可以看到登陆成功,但是每次登录都需要手动输入密码。

在终端输入:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

ssh免密码登录设置完成。

下载解压Hadoop,并配置环境

官网太慢,这里用国内的镜像会很快的下载完成:http://mirror.bit.edu.cn/apache/hadoop/common/,这里面有很多版本,我下载的是hadoop-2.7.2。

解压到指定目录:

解压hadoop

打开解压好的文件夹,找到etc/hadoop/hadoop-env.sh,配置环境变量(Linux不用,但需要有java环境,用java -version查看,如没有使用命令sudo apt-get install openjdk-8-jdk执行安装。):

找到 export JAVA_HOME=(这里换成你自己的java_home,不知道的看下面)

找到HADOOP_OPTS,更改为 export HADOOP_OPTS="-Djava.security.krb5.realm=OX.AC.UK -Djava.security.krb5.kdc=kdc0.ox.ac.uk:kdc1.ox.ac.uk"

如果不知道自己的JAVA_HOME,打开终端输入:/usr/libexec/java_home

-V

列出了mac里所装的java的路径:

屏幕快照 2016-11-03 下午3.21.51.png

hadoop只能在jdk1.6之后的环境运行,我这里是1.8.

将hadoop-env.sh中的JACA_HOME改为:

JAVA_HOME = /Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home

接下来找到etc/hadoop/core-site.xml文件配置hdfs的地址和端口号,改为:

fs.defaultFS

hdfs://localhost:9000

接下来找到etc/hadoop/hdfs-site.xml 改为:

dfs.replication

1

dfs.namenode.name.dir

file:/Users/JYH/Desktop/Hadoop-2.7.2/hadoop-2.7.2/name(这里路径自己修改创建)

dfs.datanode.data.dir

file:/Users/JYH/Desktop/Hadoop-2.7.2/hadoop-2.7.2/data(这里路径自己修改创建)

找到mapred-site.xml(没有就复制mapred-site.xml.template改成mapred-site.xml)指定JobTracker的主机名与端口改为:

mapred.job.tracker

hdfs://localhost:9001

mapred.tasktracker.map.tasks.maximum

2

mapred.tasktracker.reduce.tasks.maximum

2

找到yarn-site.xml 改为:

yarn.nodemanager.aux-services

mapreduce_shuffle

运行第一个Hadoop程序:WordCount

到此为止hadoop的环境就配好了,接下来打开终端,进入到hadoop的目录,对节点进行格式化:

bin/hdfs namenode -format

进入到hadoop目录下,依次执行sbin/start-dfs.sh,和 sbin/start-yarn.sh

在终端输入jps命令,可以看到当前与hadoop有关的进程:

相关进程

运行WorldCount:

创建所需的几个目录:

bin/hdfs dfs -mkdir /user

bin/hdfs dfs -mkdir /user/JYH

将本地文件拷贝到HDFS中:

//这里前面的路径是本地路径,我放了一个测试文本在里面,然后复制到hdfs中由上面命令创建的JYH文件夹下

bin/hdfs dfs -put /Users/JYH/Desktop/Hadoop-2.7.2/hadoop-2.7.2/input/test /user/JYH/input

bin/hdfs dfs -ls /user/JYH #查看/user/JYH中的文件

进入到hadoop目录下运行示例程序WordCount:

bin/hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.2-sources.jar org.apache.hadoop.examples.WordCount input output

结果如图便是成功了,如果有报错就去日志里去查一下:

结果

在终端查看运行结果如下图:

//查看运行结果

bin/hdfs dfs -cat output/*

WordCount

运行程序时,输出目录需不存在,所以以后每次通过命令运行程序时记得删除output文件夹

bin/hdfs dfs -rm -R /user/JYH/input/* # 删除 input 中的文件

bin/hdfs dfs -rm -R /user/JYH/output # 删除 output 文件夹

至此,在mac上搭建hadoop就已经完毕了,Linux也一样,只是ssh免密码登陆不一样而已。

附上Linux SSH免密码登陆:

Ubuntu默认安装了SSH client,还需要安装SSH server。

sudo apt-get install openssh-server

集群、单节点模式都需要用到SSH无密码登陆,首先设置SSH无密码登陆本机。

输入命令

ssh localhost

首次登陆还有提示,输入yes,然后输入密码。

然后输入下面命令:

exit # 退出 ssh localhost

cd ~/.ssh # 如果没有该目录,先执行一次ssh localhost

ssh-keygen -t rsa # 一直按回车就可以

cp id_rsa.pub authorized_keys

此时在用ssh localhost 就不用密码了。