编程我爱编程

OS X 安装Hadoop教程 单机 伪分布式配置

2017-12-27  本文已影响19人  harrytc

题外话。。。这是一个Markdown知识点。。。在段首我都想输入空格,在markdown下打不出,遂求知乎我很喜欢这个回答:Markdown 奉行的是样式和内容分开的哲学。来自王成

 //半角空格(英文)
 //全角空格(中文)

步入正题

这个是我上手就想发布的,临近发布出现问题,so 一直拖到了现在。。。

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算.本教程将指导如何用苹果macOS系统安装Hadoop。

安装Homebrew

习惯使用ubuntu的同学,一定很喜欢ubuntu系统apt-get的软件安装方式。macOS上也有类似这样的包管理器,利用Homebrew即可。
Homebrew的官方网站
安装Homebrew的方法:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

需要注意的是:
Homebrew安装的软件都集中在/usr/local/Cellar里面
想了解更多有关Homebrew的知识,访问macOS 安装Homebrew和常用命令

ssh登录本地

  1. ssh-keygen -t rsa -P

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

Shell 命令

ssh-keygen -t rsa -P ""
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

这样就可以生成ssh公钥,接下来进行测试登录本地是否成功

ssh localhost

登录成功显示结果如下:


安装Hadoop

输入以下代码,自动安装hadoop

brew install hadoop

安装过程会提示重要的信息,如下:

Updating Homebrew...

==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> New Formulae
stress-ng           telnetd             tnftp               tnftpd
==> Updated Formulae
amazon-ecs-cli             fmt                        libfabric
angular-cli                frugal                     logstash
apm-server                 gmime                      lxc
arangodb                   gnupg                      metricbeat
argyll-cms                 gopass                     miniupnpc
cgrep                      grpc                       neko
conjure-up                 harfbuzz                   nomad
cromwell                   heartbeat                  packetbeat
dar                        jenkins                    snappy
dlib                       jsoncpp                    spdlog
elasticsearch              kibana                     ttyrec
etcd                       libbitcoin-explorer        weechat
fftw                       libbitcoin-node            yle-dl
filebeat                   libbitcoin-server
fio                        libcouchbase

Warning: hadoop 2.8.2 is already installed

在这里显示我大Hadoop已经安装成功了
在macOS中,我们可以终端输入:
/usr/libexec/java_home来获取JAVA_HOME的路径
Hadoop的安装需要配置JAVA_HOME,用 brew安装,就已经帮我们配置好了。

测试Hadoop是否安装成功

Hadoop有三种安装模式:单机模式,伪分布式模式,分布式模式
分布式模式需要在多台电脑上面测试,这里只测试前面两种,即单机模式和伪分布式模式

测试单机模式

这里使用Hadoop附带的示例来检验单机模式是否运行正常。
通过Homebrew安装的Hadoop,附带的示例在路径/usr/local/Cellar/hadoop/2.8.2/libexec/share/hadoop/mapreduce

通过Homebrew默认会安装软件的最新stable版本,所以读者安装的Hadoop版本会大于或等于2.8.2版本

单词计数wordcount是最简单也是最能体现MapReduce思想的程序之一,可以称为MapReduce版”Hello World”,单词计数主要完成功能是:统计一系列文本文件中每个单词出现的次数.

cd /usr/local/Cellar/hadoop/2.8.2/
mkdir input 
mkdir output
cd input
echo 'hello world' > file1.txt
echo 'hello hadoop' > file2.txt
hadoop jar /usr/local/Cellar/hadoop/2.8.2/libexec/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.2.jar  wordcount /usr/local/Cellar/hadoop/2.8.2/input/ /usr/local/Cellar/hadoop/2.8.2/output/
17/12/21 18:00:45 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
17/12/21 18:00:45 INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs.metrics.session-id
17/12/21 18:00:45 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory file:/usr/local/Cellar/hadoop/2.8.2/output already exists
    at org.apache.hadoop.mapreduce.lib.output.FileOutputFormat.checkOutputSpecs(FileOutputFormat.java:146)
    at org.apache.hadoop.mapreduce.JobSubmitter.checkSpecs(JobSubmitter.java:268)
    at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:141)
    at org.apache.hadoop.mapreduce.Job$11.run(Job.java:1341)
    at org.apache.hadoop.mapreduce.Job$11.run(Job.java:1338)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1836)
    at org.apache.hadoop.mapreduce.Job.submit(Job.java:1338)
    at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1359)
    at org.apache.hadoop.examples.WordCount.main(WordCount.java:87)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:71)
    at org.apache.hadoop.util.ProgramDriver.run(ProgramDriver.java:144)
    at org.apache.hadoop.examples.ExampleDriver.main(ExampleDriver.java:74)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:234)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:148)
more output/part-r-00000

显示结果如下:

测试伪分布式模式

这个可以参考官网的配置     官网☺:我在这

测试为分布模式前,需要修改相关的配置文件,把之前的单机模式修改成伪分布式模式

界面信息 忽视警告

其间警告
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
一直存在,解决方法来自CSDN:

Hadoop自身的原因,需要自己编译Makefile里所需要的libhadooppipes.a和libhadooputils.a这两个静态库文件以适应自己系统的需求 (官网说预编译的是32位库,如果你是64位的才需要重新编译,可是我主机虽是64位但虚拟机系统是32位的,不知道为什么也不行需要重新编译)这个你可以去下载就行,下载对应的版本即可

文章修改自http://dblab.xmu.edu.cn/blog/820-2/

上一篇下一篇

猜你喜欢

热点阅读