Java 版本 1.8.0_18
mac os 10.13.6
hadoop 版本: 3.1.1
安装Java
首先要确定mac上是否安装了Java环境, 在命令行输入下面的语句就可以验证并得到Java的版本。
java -version
如果没有安装好Java环境,网上有很多安装Java的教程,大家可以去查阅。
安装hadoop
在mac上brew很方便的对软件进行安装和卸载。
brew install hadoop
然后使用下面的命令,如果出现hadoop的版本信息则表示安装成功。
hadoop version
配置ssh环境
在terminal里面输入: ssh localhost
如果有错误提示信息,表示当前用户没有权限。这个多半是系统为安全考虑,默认设置的。
更改设置如下:进入system preference --> sharing --> 勾选remote login,并设置allow access for all users。
再次输入“ssh localhost",再输入密码并确认之后,可以看到ssh成功。
如果不执行这一步,后面启动hadoop时会出现Connection refused的错误。
配置hadoop
从命令行进入/usr/local/Cellar/hadoop/3.1.1/libexec/etc/hadoop,然后修改下面的文件。
1、修改core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:8020</value>
</property>
<!--用来指定hadoop运行时产生文件的存放目录 自己创建-->
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/Cellar/hadoop/tmp</value>
</property>
</configuration>
2、修改hdfs-site.xml,配置namenode和datanode
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--不是root用户也可以写文件到hdfs-->
<property>
<name>dfs.permissions</name>
<value>false</value> <!--关闭防火墙-->
</property>
<!--把路径换成本地的name坐在位置-->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/Cellar/hadoop/tmp/dfs/name</value>
</property>
<!--在本地新建一个存放hadoop数据的文件夹,然后将路径在这里配置一下-->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/Cellar/hadoop/tmp/dfs/data</value>
</property>
</configuration>
3、修改 mapred-site.xml.
<configuration>
<property>
<!--指定mapreduce运行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9010</value>
</property>
<!-- 新添加 -->
<!-- 下面的路径就是你hadoop distribution directory -->
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/Cellar/hadoop/3.1.1/libexec</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/Cellar/hadoop/3.1.1/libexec</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/Cellar/hadoop/3.1.1/libexec</value>
</property>
</configuration>
然后输入hdfs namenode -format 格式化namenode节点,看到下面的结果就说明成功了。
4、修改yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>localhost:9000</value>
</property>
启动hadoop
在sbin/目录下输入./start-dfs.sh启动hdfs服务。然后,在浏览器中输入http://localhost:9870/,出现以下界面就说明成功了。特别要注意的是这里不是http://localhost:50070。输入./stop-dfs.sh就可以停止服务。
启动yarn服务
在sbin目录下输入./start-yarn.sh, 然后在浏览器中打开http://localhost:8088/就会出现下图的界面。用./stop-yarn.sh可以停止服务。
至此,配置就成功了。配置时有个警告,WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable,但是不会影响搭建。还没有在上面运行例子,还不知道会不会有问题。
后面在上面运行了workcount的例子,可以正常运行!!但是需要在mapred-site.xml里面添加几个<property></property>, 代码里面已经备注了新添加。否则mapreduce的时候会出错误。
如果yarn-site.xml没有配置好,在后面使用hive执行mapreduce sql任务就有可能会出现下面的错误:
ACCEPTED: waiting for AM container to be allocated, launched and register with RM.状态
在yarn-site.xml加入下面一段代码可能会解决问题。记得要重启yarn,不然修改可能不会生效。
<property>
<name>yarn.scheduler.capacity.maximum-am-resource-percent</name>
<value>100</value>
</property>
参考连接:https://www.jianshu.com/p/34521593f30e