在macOS sierra(或Linux)上搭建伪分布式Hadoop

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

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


在macOS sierra(或Linux)上搭建伪分布式Hadoop_第1张图片
远程访问

打开终端,在里面输入: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。

解压到指定目录:


在macOS sierra(或Linux)上搭建伪分布式Hadoop_第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的路径:


在macOS sierra(或Linux)上搭建伪分布式Hadoop_第3张图片
屏幕快照 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有关的进程:

在macOS sierra(或Linux)上搭建伪分布式Hadoop_第4张图片
相关进程

运行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

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

在macOS sierra(或Linux)上搭建伪分布式Hadoop_第5张图片
结果

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

//查看运行结果
bin/hdfs dfs -cat output/*
在macOS sierra(或Linux)上搭建伪分布式Hadoop_第6张图片
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 就不用密码了。

你可能感兴趣的:(在macOS sierra(或Linux)上搭建伪分布式Hadoop)