Mac M1安装Hadoop
![Hadoop Logo](
在Mac M1上安装Hadoop可能会遇到一些挑战,因为M1芯片采用了ARM架构,而不是常见的x86架构。这就需要我们进行一些额外的步骤来确保Hadoop能够在M1芯片上正常运行。
准备工作
在开始安装Hadoop之前,需要准备以下几样东西:
- 安装Homebrew包管理器
- 安装Java Development Kit (JDK)
- 下载Hadoop安装包
安装Homebrew
Homebrew是Mac上常用的包管理器,可以方便地安装和管理各种开源软件。在终端中执行以下命令来安装Homebrew:
/bin/bash -c "$(curl -fsSL
安装JDK
Hadoop是基于Java开发的,因此首先需要安装Java Development Kit(JDK)。在终端中执行以下命令来安装JDK:
brew install openjdk@11
下载Hadoop安装包
在Apache Hadoop的官方网站上下载Hadoop的最新版本。解压缩下载的安装包,并将解压后的文件夹重命名为hadoop
,并将其移动到适当的位置,例如/usr/local
目录下。
配置Hadoop
在安装Hadoop之前,需要进行一些配置以确保其能够在M1芯片上正常工作。
首先,进入Hadoop的安装目录:
cd /usr/local/hadoop
修改配置文件
Hadoop的配置文件位于etc/hadoop
目录下。使用任何文本编辑器打开etc/hadoop/hadoop-env.sh
文件,并将以下行添加到文件的末尾:
export JAVA_HOME=/usr/local/opt/openjdk@11
这将告诉Hadoop使用我们在上一步中安装的JDK版本。
配置HDFS
创建一个新的目录来存储Hadoop的数据文件:
sudo mkdir -p /usr/local/hadoop_tmp/hdfs/namenode
sudo mkdir -p /usr/local/hadoop_tmp/hdfs/datanode
sudo chown -R $USER /usr/local/hadoop_tmp
然后,打开etc/hadoop/hdfs-site.xml
文件,并添加以下配置:
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///usr/local/hadoop_tmp/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///usr/local/hadoop_tmp/hdfs/datanode</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
这些配置将告诉Hadoop存储数据文件的位置以及数据复制的数量。
配置YARN
打开etc/hadoop/yarn-site.xml
文件,并添加以下配置:
<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>
这些配置将启用YARN的相关功能。
运行Hadoop
在完成配置后,就可以启动Hadoop并运行示例程序了。在终端中执行以下命令来启动Hadoop:
bin/hadoop namenode -format
sbin/start-dfs.sh
sbin/start-yarn.sh
这将启动Hadoop的相关服务。
运行示例程序
Hadoop自带了一些示例程序,可以帮助我们了解它的基本用法。在终端中执行以下命令来运行WordCount示例程序:
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount input output
这将对input
目录中的文本文件进行