配置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。
解压到指定目录:
打开解压好的文件夹,找到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的路径:
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的地址和端口号,改为:
<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>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/Users/JYH/Desktop/Hadoop-2.7.2/hadoop-2.7.2/name</value>(这里路径自己修改创建)
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/Users/JYH/Desktop/Hadoop-2.7.2/hadoop-2.7.2/data</value>(这里路径自己修改创建)
</property>
</configuration>
找到mapred-site.xml(没有就复制mapred-site.xml.template改成mapred-site.xml)指定JobTracker的主机名与端口改为:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://localhost:9001</value>
</property>
<property>
<name>mapred.tasktracker.map.tasks.maximum</name>
<value>2</value>
</property>
<property>
<name>mapred.tasktracker.reduce.tasks.maximum</name>
<value>2</value>
</property>
</configuration>
找到yarn-site.xml 改为:
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
运行第一个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/*
运行程序时,输出目录需不存在,所以以后每次通过命令运行程序时记得删除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 就不用密码了。