提示:这里有Exit code: 127 Stack trace: ExitCodeException exitCode=127: 错误的解决的方法,在文章最后面

一、首先要配置好java环境
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
mac电脑直接jdk-8u144-macosx-x64.dmg一键安装jdk
然后配置jdk环境,

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
CLASSPAHT=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH:
export JAVA_HOME
export CLASSPATH
export PATH  

二、ssh配置
首先确认能够远程登录
系统偏好设置-共享 -远程登录

  1. ssh-keygen -t rsa
    Press enter for each line 提示输入直接按回车就好

  2. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

  3. chmod og-wx ~/.ssh/authorized_keys
    ssh localhost
    如果ssh localhost还需要密码 查看一下你.ssh目录的权限
    .ssh的父目录的权限问题(我的问题就出现在这里):.ssh的父目录文件权限应该是755,即所属用户的 用户文件 (/home下属的一个用户文件)

执行chmod 755 ~/.ssh

三、安装配置hadoop文件
下载地址:http://hadoop.apache.org/releases.html
http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.8.1/hadoop-2.8.1.tar.gz

tar -zxvf hadoop-2.8.1.tar.gz
cd hadoop-2.8.1

修改配置文件 配置文件在hadoop目录下的/etc/hadoop
1.修改core-site.xml 文件

<configuration>  <!-- 指定HDFS老大(namenode)的通信地址 -->  <property>  <name>fs.defaultFS</name>  <value>hdfs://localhost:9000</value>  </property>  <!-- 指定hadoop运行时产生文件的存储路径 -->  <property>  <name>hadoop.tmp.dir</name>  <value>/Users/chenxun/software/hadoop-2.8.1/temp</value>  </property>
</configuration>

2.修改hadfs-site.xml
默认副本数3,修改为1,dfs.namenode.name.dir指明fsimage存放目录,多个目录用逗号隔开。dfs.datanode.data.dir指定块文件存放目录,多个目录逗号隔开

<configuration>
<property>  <name>dfs.replication</name>  <value>1</value>  </property>  <property>  <name>dfs.namenode.name.dir</name>  <value>file:/Users/chenxun/software/hadoop-2.8.1/tmp/hdfs/name</value>  </property>  <property>  <name>dfs.datanode.data.dir</name>  <value>file:/Users/chenxun/software/hadoop-2.8.1/tmp/hdfs/data</value>  </property>  <property>  <name>dfs.namenode.secondary.http-address</name>  <value>localhost:9001</value>  </property>  <property>  <name>dfs.webhdfs.enabled</name>  <value>true</value>  </property>
</configuration>

3.yarn配置
mapred-site.xml

<configuration>
<property>  <name>mapreduce.framework.name</name>  <value>yarn</value>  </property>  <property>  <name>mapreduce.admin.user.env</name>  <value>HADOOP_MAPRED_HOME=$HADOOP_COMMON_HOME</value>  </property>  <property>  <name>yarn.app.mapreduce.am.env</name>  <value>HADOOP_MAPRED_HOME=$HADOOP_COMMON_HOME</value>  </property> <property><name>mapreduce.application.classpath</name><value>/Users/chenxun/software/hadoop-2.8.1/etc/hadoop,/Users/chenxun/software/hadoop-2.8.1/share/hadoop/common/*,/Users/chenxun/software/hadoop-2.8.1/share/hadoop/common/lib/*,/Users/chenxun/software/hadoop-2.8.1/share/hadoop/hdfs/*,/Users/chenxun/software/hadoop-2.8.1/share/hadoop/hdfs/lib/*,/Users/chenxun/software/hadoop-2.8.1/share/hadoop/mapreduce/*,/Users/chenxun/software/hadoop-2.8.1/share/hadoop/mapreduce/lib/*,/Users/chenxun/software/hadoop-2.8.1/share/hadoop/yarn/*,/Users/chenxun/software/hadoop-2.8.1/share/hadoop/yarn/lib/*</value>
</property>
</configuration>

yarn-site.xml

<configuration><!-- Site specific YARN configuration properties --><property>  <name>yarn.nodemanager.aux-services</name>  <value>mapreduce_shuffle</value>  </property><property><name>yarn.application.classpath</name><value>/Users/chenxun/software/hadoop-2.8.1/etc/hadoop,/Users/chenxun/software/hadoop-2.8.1/share/hadoop/common/*,/Users/chenxun/software/hadoop-2.8.1/share/hadoop/common/lib/*,/Users/chenxun/software/hadoop-2.8.1/share/hadoop/hdfs/*,/Users/chenxun/software/hadoop-2.8.1/share/hadoop/hdfs/lib/*,/Users/chenxun/software/hadoop-2.8.1/share/hadoop/mapreduce/*,/Users/chenxun/software/hadoop-2.8.1/share/hadoop/mapreduce/lib/*,/Users/chenxun/software/hadoop-2.8.1/share/hadoop/yarn/*,/Users/chenxun/software/hadoop-2.8.1/share/hadoop/yarn/lib/*</value></property></configuration>

四、配置hadoop环境变量,可能需要重新编译native library

vim ~/.bash_profile
export HADOOP_HOME=/Users/chenxun/software/hadoop-2.8.1
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/binexport  LD_LIBRARY_PATH=$HADOOP_HOME/lib/native/
export  HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export  HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native:$HADOOP_COMMON_LIB_NATIVE_DIR"

**上面配置基本完成,一般没什么问题了。可以开始运行你的hadoop了,直接看第五步好了,有问题继续往下看。

**

下面步骤在你运行hadoop的过程可能碰到,如果你碰到了再回头看这,:
在mac可能还要重新编译hadoop的运行用到动态库;这个时候肯能要配置maven环境,根据自己的maven安装路径配置maven环境,再重新编译/lib/native下动态要用到
如果你在运行出现下面的情况就需要重新编译动态库:
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
参考链接:http://blog.csdn.net/tterminator/article/details/51779689
参考二:Mac下 hadoop-2.7.0编译过程记录http://blog.csdn.net/beijihukk/article/details/53782508?utm_medium=referral&utm_source=itdadao

先下载好hadoop源码:hadoop-2.8.1-src
重新编译之前需要安装
protobuf
和maven以及cmake,自己百度搜索安装即可
protobuf安装方法如下:

1. protobuf 2.5版本的brew安装方法
$ brew search protobuf
protobuf                   protobuf-c                 protobuf-swift
homebrew/php/php53-protobuf              homebrew/php/php56-protobuf
homebrew/php/php54-protobuf              homebrew/versions/protobuf250
homebrew/php/php55-protobuf              homebrew/versions/protobuf260
$ brew install homebrew/versions/protobuf250

配置maven环境

export M2_HOME=/Users/chenxun/software/apache-maven-3.5.0

编译动态库过程出现下面的错误可能是zlib没安装
也可能是openssl没设置好,设置openssl的方法如下(我的mac,你根据你自己的openssl安装路径设置)

export OPENSSL_ROOT_DIR=/usr/local/Cellar/openssl/1.0.2k
export OPENSSL_INCLUDE_DIR=/usr/local/Cellar/openssl/1.0.2k/include

**开始编译native库,命令如下:
mvn package -Pdist,native -DskipTests -Dtar**

将编译出的native library复制到下载的二进制版本的hadoop-2.8.1相应目录中
编译出的native library库的位置为
hadoop-2.8.1-src/hadoop-dist/target/hadoop-2.8.1/lib/native
拷贝到二进制版本的hadoop-2.8.1的目录
hadoop-2.8.1/lib/native

修改/etc/hadoop/hadoop-env.sh配置

 export HADOOP_OPTS=”$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.library.path=/hadoop-2.6.0/lib/native”

重新启动Hadoop

此时就不会出现本文开头处的那个警告了。


五、运行hadoop 以及hadoop命令简单的介绍
格式化HDFS

hdfs namenode -format

一次启动hadoop所有进程:

start-all.sh 

打开 http://localhost:50070 进入hdfs管理页面
打开 http://localhost:8088 进入hadoop进程管理页面

hadoop命令简单介绍:
创建目录

hdfs dfs -mkdir -p /user/chenxun/input

查看:
hadoop fs -ls /user/chenxun/

先自己随便建一个file.txt文件,在文件随便写点东西,如下:

vim file.txthadoop
chenxun
hadoop
chen

把这个文件用命令上传你刚才建文件input下面:命令如下:

hdfs dfs -put ./file.txt  input 

用命令查看一下是否成功:如果成功你在input下面看到file.txt文件

hadoop fs -ls /user/chenxun/input

这个时候你测试hadoop提供的wordcount例子:执行下面的语句(如果出现错误不要着急往文章后面看解决方法)

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.1.jar wordcount /user/chenxun/input/file.txt  output

运行过程如下

17/10/14 01:55:26 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
17/10/14 01:55:28 INFO input.FileInputFormat: Total input files to process : 1
17/10/14 01:55:28 INFO mapreduce.JobSubmitter: number of splits:1
17/10/14 01:55:28 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1507912953622_0017
17/10/14 01:55:28 INFO impl.YarnClientImpl: Submitted application application_1507912953622_0017
17/10/14 01:55:28 INFO mapreduce.Job: The url to track the job: http://chen.local:8088/proxy/application_1507912953622_0017/
17/10/14 01:55:28 INFO mapreduce.Job: Running job: job_1507912953622_0017
17/10/14 01:55:36 INFO mapreduce.Job: Job job_1507912953622_0017 running in uber mode : false
17/10/14 01:55:36 INFO mapreduce.Job:  map 0% reduce 0%
17/10/14 01:55:41 INFO mapreduce.Job:  map 100% reduce 0%
17/10/14 01:55:47 INFO mapreduce.Job:  map 100% reduce 100%
17/10/14 01:55:47 INFO mapreduce.Job: Job job_1507912953622_0017 completed successfully
17/10/14 01:55:48 INFO mapreduce.Job: Counters: 49File System CountersFILE: Number of bytes read=44FILE: Number of bytes written=276523FILE: Number of read operations=0FILE: Number of large read operations=0FILE: Number of write operations=0HDFS: Number of bytes read=141HDFS: Number of bytes written=26HDFS: Number of read operations=6HDFS: Number of large read operations=0HDFS: Number of write operations=2Job Counters Launched map tasks=1Launched reduce tasks=1Data-local map tasks=1Total time spent by all maps in occupied slots (ms)=3032Total time spent by all reduces in occupied slots (ms)=3133Total time spent by all map tasks (ms)=3032Total time spent by all reduce tasks (ms)=3133Total vcore-milliseconds taken by all map tasks=3032Total vcore-milliseconds taken by all reduce tasks=3133Total megabyte-milliseconds taken by all map tasks=3104768Total megabyte-milliseconds taken by all reduce tasks=3208192Map-Reduce FrameworkMap input records=4Map output records=4Map output bytes=43Map output materialized bytes=44Input split bytes=114Combine input records=4Combine output records=3Reduce input groups=3Reduce shuffle bytes=44Reduce input records=3Reduce output records=3Spilled Records=6Shuffled Maps =1Failed Shuffles=0Merged Map outputs=1GC time elapsed (ms)=134CPU time spent (ms)=0Physical memory (bytes) snapshot=0Virtual memory (bytes) snapshot=0Total committed heap usage (bytes)=306708480Shuffle ErrorsBAD_ID=0CONNECTION=0IO_ERROR=0WRONG_LENGTH=0WRONG_MAP=0WRONG_REDUCE=0File Input Format Counters Bytes Read=27File Output Format Counters Bytes Written=26

再执行看看执行结果:

hadoop fs -ls /user/chenxun/output

这时候你看到:

Found 2 items
-rw-r--r--   1 chenxun supergroup          0 2017-10-14 01:55 /user/chenxun/output/_SUCCESS
-rw-r--r--   1 chenxun supergroup         26 2017-10-14 01:55 /user/chenxun/output/part-r-00000

接下来真正看一下你的单词统计结果:

hadoop fs -cat  /user/chenxun/output/part-r-00000

因为我的file.txt文件内容是

[chenxun@chen.local 11:13 ~/software/hadoop-2.8.1]$cat file.txt
hadoop
chenxun
hadoop
chen

所有统计结果如下:

chen    1
chenxun 1
hadoop  2

Exit code: 127 Stack trace: ExitCodeException exitCode=127: 的错误解决方法如下:

六、如果你在第五步执行过程出现错误:Exit code: 127 Stack trace: ExitCodeException exitCode=127: 不要着急这里了解决方法:

今天在Mac配置伪分布式环境。部署完毕后,运行MapReduce程序,程序运行刚开始没有问题, 但是到启动Map Task时,就报错误,报exitCode: 127错误。
错误日志如下:
15/04/06 00:08:01 INFO mapreduce.Job: Job job_1428250045856_0002 failed with state FAILED due to: Application application_1428250045856_0002 failed 2 times due to AM Container for appattempt_1428250045856_0002_000002 exited with  exitCode: 127 due to: Exception from container-launch: org.apache.hadoop.util.Shell$ExitCodeException:
org.apache.hadoop.util.Shell$ExitCodeException:
at org.apache.hadoop.util.Shell.runCommand(Shell.java:505)
at org.apache.hadoop.util.Shell.run(Shell.java:418)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:650)解决办法:
1 从错误日志上看应该是某个Shell命令在Mac上没有找到。
2 查看每个程序的日志:hadoop-2.3.0/logs/userlogs/application_1428247759749_0002/container_1428247759749_0002_02_000001中的错误日志:/bin/bash: /bin/java: No such file or directory
可以看到:/bin/java 的命令没有找到。建立一个软链接,链接到java程序即可。上文中的日志文件和异常中的文件名对应不上,这个是我编写时的问题, 实际可以根据日志中的文件名找到具体的错误文件。但是整个流程,是这个。

是因为Hadoop默认检查/bin/java路径下的java,可是Mac的Java不是装这里的,它的路径是/usr/bin/java。你不信啊,那你输入命令$ /usr/bin/java -version, 看看是不是会出现类似以下的信息:

Java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java Hotspot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
如果对了的话,那么下一步就是在/bin/java创建一个快捷方式,让Hadoop读到/usr/bin/java里的信息:
$ sudo ln -s /usr/bin/java /bin/java再输入命令$ /bin/java -version验证一遍,显示:
引用
Java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java Hotspot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

这个时候你在执行sudo ln -s /usr/bin/java /bin/java出现问题:ln: /bin/java: Operation not permitted


这是mac系统的原因不是你的错。
这是因为苹果在OS X 10.11中引入的SIP特性使得即使加了sudo(也就是具有root权限)也无法修改系统级的目录,其中就包括了/usr/bin。要解决这个问题有两种做法:一种是比较不安全的就是关闭SIP,也就是rootless特性;另一种是将本要链接到/usr/bin下的改链接到/usr/local/bin下就好了。
废话不多说上解决方法:

重启按住 Command+R,进入恢复模式,打开Terminal

csrutil disable

重启即可。如果要恢复默认,最好这么做,那么

csrutil enable

参考链接:http://www.jianshu.com/p/22b89f19afd6

mac下hadoop环境的搭建以及碰到的坑点相关推荐

  1. mac下hadoop环境的搭建

    提示:这里有Exit code: 127 Stack trace: ExitCodeException exitCode=127: 错误的解决的方法,在文章最后面 一.首先要配置好java环境  下载 ...

  2. 简单易行的用windows系统虚拟苹果mac操作系统 mac下android环境搭建笔记(android studio)

    作者:韩梦飞沙 QQ:313134555 ios模拟器电脑版中文版(iPadian)下载 - 『精品软件区』 - 吾爱破解论坛 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52po ...

  3. mac 本地php环境搭建,mac下php环境搭建的方法

    mac下php环境搭建的方法是:首先切换到root用户:然后查看80端口是否被占用:接着开启apache,并在"httpd.conf"中开启php模块:最后编写php代码进行测试即 ...

  4. Mac下使用ABTestingGateway快速搭建灰度网关

    Mac下使用ABTestingGateway快速搭建灰度网关 ABTestingGateway简介 ABTestingGateway 是新浪开源的一个可以动态设置分流策略的灰度发布系统,工作在7层,基 ...

  5. Mac下修改环境变量

    Mac下修改环境变量 如果使用默认Bash, 首先修改 ~/.bash_profile 文件,添加文件路径,比如: export PATH=~/bin:/usr/local/bin/node:~/Do ...

  6. linux系统配置php环境,linux下php环境的搭建

    linux下php环境的搭建 下面我们来学习一下linux下php环境的搭建: 1.我们要先下载 php-5.4.0.tar.gz 网址为: 2.下载完成之后我们可以通过前面的文章中linux访问wi ...

  7. PHP学习记录第一篇:Ubuntu14.04下LAMP环境的搭建

    PHP学习记录第一篇:Ubuntu14.04下LAMP环境的搭建 最近一段时间会学习一下PHP全栈开发,将会写一系列的文章来总结学习的过程,以自勉. 第一篇记录一下LAMP环境的安装 0. 安装Apa ...

  8. Windows下UEFI环境的搭建

    Windows下UEFI环境的搭建 一.环境准备 1. 安装2012及以上VS https://visualstudio.microsoft.com/ 2.下载NASM 2.13.03  http:/ ...

  9. ODrive踩坑(一)windows下使用环境的搭建,odrivetool及USB驱动的安装

    最近有空玩玩无刷电机,早就听说ODrive的控制效果不凡,淘宝400买来玩玩.电机使用我以前囤的几个拆机DJI-3512,别看拆机,但悟的电机是针不戳:编码器使用TLE5012B-E1000磁编码器, ...

最新文章

  1. 苹果通知推送服务(APNS)关键特性摘要
  2. [算法]判断一个数是不是2的N次方
  3. html5 标准结构_IT兄弟连 HTML5教程 HTML文件的主体结构
  4. Linux zip加密压缩
  5. python写入excel表格数据绘制图表_(原创)xlsxwriter,python excel 写入数据\图表等操作_图表操作(二)...
  6. 百度编辑器ueditor 字符限制
  7. html几个数据包,报文和数据包的区别
  8. Ubuntu18.04快捷键
  9. SQL还原数据库剔除占用
  10. Sigrity仿真之电热混合仿真
  11. 宝塔脚本下载慢解决办法
  12. 行人重识别论文阅读14-Learning by Aligning- Visible-Infrared Person Re-identification
  13. 华为笔记本电脑触摸板失灵解决方法(触摸屏同理)
  14. 服务器修改host的ip,主机IP地址设置
  15. 各个网站及搜索引擎收录地址大全
  16. 3.14 我总结的一些小红书笔记发布频率技巧!【玩赚小红书】
  17. Android开发(四):在标题栏右上角实现菜单(三个点)
  18. 3.2 使用直线段工具标注尺寸信息 [Illustrator CC教程]
  19. WinSCP集成PuTTY
  20. 安装nvida-docker2

热门文章

  1. Matplotlib常见图形绘制(折线图、散点图 、柱状图 、直方图 、饼图 、条形图)
  2. 毕业设计-基于SpringBoot幼儿园管理系统
  3. vue文件夹上传组件选哪个好?
  4. Python 可视化如何配色?这个工具你值得拥有
  5. 十分钟教会你们怎么开传奇
  6. 企业微信scrm是什么
  7. 什么是3D打印?3D打印技术?
  8. Python PrettyTable 模块(美化库)
  9. 健壮F.T.+新裸金属重磅发布!全新升级版ZStack加速新基建!
  10. 什么是外网服务器?如何搭建外网服务器