Mac安装Hadoop

一:简介

Hadoop是一个用Java开发的开源框架,它允许使用简单的编程模型在跨计算机集群的分布式环境中存储和处理大数据。它的设计是从单个服务器扩展到数千个机器,每个都提供本地计算和存储。特别适合写一次,读多次的场景。

Hadoop一般用于对大量数据执行完整统计分析的应用程序。

Hadoop架构图:
在这里插入图片描述

  • HDFS:分布式文件系统 Hadoop Distributed File System
  • YARN:分布式资源管理和作业调度
  • MapReduce:分布式计算

Hadoop的搭建有三种方式,本文章安装的是单机版

  • 单机版:适合开发调试。
  • 伪分布式版:适合模拟集群学习。
  • 完全分布式:生产使用的模式。

二:安装步骤

1. 修改主机名

sudo scutil --set HostName localhost

2. ssh免密登录

具体配置方法:

(1)ssh-keygen -t rsa      (一路回车直到完成)
(2)cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
(3)chmod og-wx ~/.ssh/authorized_keys

然后重启终端,在命令行下输入>ssh localhost 如果不需要输密码即可进入,证明设置成功。如果仍需要输入密码,那可能是文件权限的问题,尝试执行 chmod 755 ~/.ssh

3. 安装hadoop

这里安装的是目前最新版本3.1.1

brew install hadoop

4. 修改配置文件 libexec/etc/hadoop/core-site.xml

在修改配置文件时注意不要有中文字符,如中文空格之类的

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<property>
     <name>hadoop.tmp.dir</name>
     <value>file:/usr/local/Cellar/hadoop/3.1.1/libexec/tmp</value>
  </property>
  <property>
     <name>fs.defaultFS</name>
     <value>hdfs://localhost:8020</value>
  </property>
</configuration>

5. 修改配置文件 libexec/etc/hadoop/hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<property>
		<name>dfs.permissions.enabled</name>
		<value>false</value>
	</property>
	<property>
         <name>dfs.replication</name>
         <value>1</value>
    </property>
    <property> 
         <name>dfs.namenode.name.dir</name>
         <value>file:/usr/local/Cellar/hadoop/3.1.1/libexec/tmp/dfs/name</value>
    </property>
    <property>
         <name>dfs.namenode.data.dir</name>
         <value>file:/usr/local/Cellar/hadoop/3.1.1/libexec/tmp/dfs/data</value>
    </property>
</configuration>

6. 配置hadoop的环境变量

vi ~/.bash_profile

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home

export HADOOP_HOME=/usr/local/Cellar/hadoop/3.1.1/libexec
export HADOOP_ROOT_LOGGER=DEBUG,console
export PATH=$PATH:${HADOOP_HOME}/bin

source ~/.bash_profile

7. 拷贝lib/native库 libexec目录

注意:在mac环境中,通过brew install hadoop安装时在/usr/local/Cellar/hadoop/3.1.1/libexec目录下是没有/lib/native目录的,如果没有这目录在启动hadoop时会有警告的日志 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable。
解决办法有两种:

  1. 下载hadoop的源码自己通过maven编译出lib/native。自己编码麻烦,耗时长,不一定能编译成功。
  2. 在网上找一些别人编译好的,直接放到hadoop中即可。下载lib/native然后放到/usr/local/Cellar/hadoop/3.1.1/libexec目录下,然后再重启。

下载lib/native

修改/usr/local/Cellar/hadoop/3.1.1/libexec/etc/hadoop/hadoop-env.sh

# 配置Hadoop使用的JDK版本,注意不要使用jdk1.9, 高版本会有问题
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home

 # 增加导出
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native" 

相关文章:mac下编译hadoop3.0.*版本的native lib

在这里插入图片描述

8. 格式化HDFS

注意:格式化一次就可以了

cd /usr/local/Cellar/hadoop/3.1.1/bin
./hdfs namenode -format

9. 启动Hadoop

cd /usr/local/Cellar/hadoop/3.1.1/sbin
# 使用start-dfs.sh或者start-all.sh来启动hadoop
# 停止 sbin/stop-dfs.sh 或者 sbin/stop-all.sh
./start-dfs.sh

10. 查看Hadoop是否启动成功

 # 查看启动的服务,如果有下面的服务则启动hadoop成功
jps

DataNode
NameNode  
SecondaryNameNode 

在这里插入图片描述

NameNode: http://localhost:9870/
在这里插入图片描述

三:启动yarn

1. 修改配置文件 libexec/etc/hadoop/mapred-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>

2. 修改配置文件 libexec/etc/hadoop/yarn-site.xml

<?xml version="1.0"?>
<configuration>
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
	<property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>

3. 启动yarn

# 启动ResourceManager 和 NodeManager,启动成功后可以访问http://localhost:8088/cluster
# 停止 sbin/stop-yarn.sh
# 可以通过start-all.sh 来同时启动start-dfs.sh和start-yarn.sh
sbin/start-yarn.sh

http://localhost:8088/
在这里插入图片描述

四:运行Hadoop自带的MapReduce程序(wordcount)

wordcount: 用于统计每个单词出现的次数

# 在HDFS中创建层级目录
bin/hadoop fs -mkdir -p /wordcount/input

# 将hadoop中的LICENSE.txt文件上传到层级目录中
bin/hdfs dfs -put README.txt /wordcount/input

# 查看某个层级目录下面的内容
bin/hdfs dfs -ls /wordcount/input

# 运行hadoop自带的示例程序hadoop-mapreduce-examples-3.1.1.jar 该jar中有多个示例,wordcount是其中一个示例,用于统计每个单词出现的次数,
# /wordcount/input/LICENSE.txt 表示要统计的文件
# /wordcount/output 存放统计结果存放的目录,注意/wordcount/output目录不能存在
bin/hadoop jar /usr/local/Cellar/hadoop/3.1.1/libexec/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar wordcount /wordcount/input/README.txt /wordcount/output

# 查看目录内容,运行完wordcount程序,输出目录下会有一个文件叫part-r-00000,这个就是统计的结果
bin/hdfs dfs -ls /wordcount/output 

# 查看统计结果
bin/hadoop fs -cat /wordcount/output/part-r-00000 

# 将hdfs指定的目录内容拉到自己机器上
bin/hadoop fs -get /wordcount/output /Users/mengday/Desktop/wordcount

在这里插入图片描述
在这里插入图片描述
统计结果part-r-00000

在这里插入图片描述
http://localhost:9870/ Utilities -> Browse the file system
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

五:hadoop 安装启动问题

1. There are 0 datanode(s) running and no node(s) are excluded in this operation.

有的时候在启动hadoop的时候使用jps查看如果没有启动datanode

原因

当我们使用hadoop namenode -format格式化namenode时,会在namenode数据文件夹(这个文件夹为自己配置文件中dfs.name.dir的路径)中保存一个current/VERSION文件,记录clusterID,datanode中保存的current/VERSION文件中的clustreID的值是上一次格式化保存的clusterID,这样,datanode和namenode之间的ID不一致。

解决方法
  • 第一种:如果dfs文件夹中没有重要的数据,那么删除dfs文件夹(dfs目录在core-site.xml中hadoop.tmp.dir配置),再重新格式化和启动hadoop即可。此种方式会将数据清空!

    hadoop namenode -format
    sbin/start-dfs.sh
    
  • 第二种:如果dfs文件中有重要的数据,那么在dfs/name目录下找到一个current/VERSION文件,记录clusterID并复制。然后dfs/data目录下找到一个current/VERSION文件,将其中clustreID的值替换成刚刚复制的clusterID的值即可;

2. mkdir: Cannot create directory /user. Name node is in safe mode. 可通过执行下面命令执行。
# 离开安全模式
bin/hadoop dfsadmin -safemode leave
3. 运行wordcount示例程序一直循环打印日志updateStatus
ipc.Client: IPC Client (389993238) connection to /0.0.0.0:8032 from mengday got value #80
ipc.ProtobufRpcEngine: Call: getApplicationReport took 1ms
security.UserGroupInformation: PrivilegedAction as:mengday (auth:SIMPLE) from:org.apache.hadoop.mapreduce.Job.updateStatus(Job.java:328)

mapred-site.xml去掉mapreduce.framework.name配置,并重启hadoop: sbin/stop-all.sh 和 sbin/start-all.sh。

<configuration>
  <!-- 
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
  -->
  <property>
    <name>mapreduce.job.tracker</name>
    <value>hdfs://127.0.0.1:8001</value>
    <final>true</final>
  </property>
  <property>
    <name>mapreduce.map.memory.mb</name>
    <value>200</value>
  </property>
  <property>
    <name>mapreduce.reduce.memory.mb</name>
    <value>200</value>
  </property>
</configuration>

yarn-site.xml 中增加yarn.resourcemanager.address、yarn.app.mapreduce.am.resource.mb、yarn.scheduler.minimum-allocation-mb配置

<configuration>

<!-- Site specific YARN configuration properties -->
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
  <property>
    <name>yarn.resourcemanager.address</name>
    <value>127.0.0.1:8032</value>
  </property>
  <property>
    <name>yarn.app.mapreduce.am.resource.mb</name>
    <value>200</value>
  </property>
  <property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>50</value>
  </property>
	<property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>

六: 参考文章

  • 14
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Mac安装Hadoop需要先安装Java。你可以参考之前的博客《Mac安装JDK11(国内镜像)》来安装Java。安装完成后,你可以按照以下步骤来安装Hadoop。 1. 打开终端,使用cd命令进入Hadoop的目录。可以使用如下命令: ``` cd /usr/local/Cellar/hadoop/3.3.1/libexec/etc/hadoop ``` 2. 在终端中进入Hadoop的bin目录,并执行以下命令来格式化Hadoop的文件系统: ``` ./hdfs namenode -format ``` 3. 完成格式化后,可以通过以下命令来启动Hadoop: ``` ./start-all.sh ``` 这样,你就成功地安装并启动了Hadoop在你的Mac上。请注意,这只是一个简单的安装和启动过程,具体的配置和使用还需要参考Hadoop的官方文档或其他相关资源。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Mac安装Hadoop](https://blog.csdn.net/qq_20042935/article/details/123007927)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Mac安装Hadoop(超级无敌宇宙爆炸详细)](https://blog.csdn.net/weixin_44864748/article/details/121066700)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风流 少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值