Featured image of post Mac M1/M2 Hadoop+HBase 环境搭建

Mac M1/M2 Hadoop+HBase 环境搭建

参考资料

YouTube - Install Hadoop on MacOS (Macbook M1) | HDFS

YouTube - Install Java JDK on macbook M1 / M2

文字版

Install Hadoop on MacOS (Macbook M1)

Installing Hadoop On The New M1 Pro And M1 Max MacBook Pro

mac用brew安装hbase

安装 HomeBrew

安装脚本

1
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

GitHub 可能需要配合科学上网,速度无法保证,可以改使用下方镜像

1
/bin/bash -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

安装 Java JDK

下载 zulu 维护的 Java8 JDK:Zulu Java8 JDK

本人环境安装的 Java11,也可以正常使用

安装完成后输入

1
/usr/libexec/java_home

查看 Java 安装路径

查看 Java 安装路径,并配置环境变量 JAVA_HOME

1
vim ~/.bash_profile

在末尾追加:

1
export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home

路径是上方指令输出的安装路径

安装 Hadoop

1
brew install hadoop

也可以配置下 HADOOP_HOME,路径是/opt/homebrew/Cellar/hadoop/{版本号}/libexec

1
cd /opt/homebrew/Cellar/hadoop/{版本号}/libexec/etc/hadoop

版本可能有所不同,brew 安装的库都在 /opt/homebrew/Cellar/ 下,可以直接进入文件夹一层一层查看,也可以输入 hadoop version 查看版本号

根目录下文件默认是隐藏的,macOS 下按下 Command + Shift + . 可以切换显示隐藏文件

通过 open . code .VSCode 命令行指令) 进入当前文件夹

修改 core-site.xml

1
2
3
4
5
6
<configuration>
 <property>
  <name>fs.defaultFS</name>
  <value>hdfs://localhost:9000</value>
 </property>
</configuration>

修改 hdfs-site.xml

1
2
3
4
5
6
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>

修改 mapred-site.xml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<configuration>
    <property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
    </property>
    <property>
    <name>mapreduce.application.classpath</name>   
  <value>
$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*
  </value>
    </property>
</configuration>

修改 yarn-site.xml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<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>

修改 hadoop-env.sh

取消 export JAVA_HOME= 所在行的注释,并将 Java 路径补全(同上 JAVA_HOME

hadoop-env.sh

开启 SSH 远程登录

生成 SSH 密钥对

如本地已有密钥对可忽略此步

1
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
1
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

输入

1
ssh localhost

如果没有报错则表示成功

开启远程登录

新版本:设置 => 通用 => 共享 => 远程登录

新版设置界面

点击右侧感叹号进入详情

老版本如下

老版本设置界面

Hadoop 安装完成

输入

1
2
hadoop namenode -format
start-all.sh

启动集群,访问 http://localhost:9870,如有页面则说明启动成功

安装 HBase

1
brew install hbase
1
cd /opt/homebrew/Cellar/hbase/{你的版本号}/libexec/conf

修改 hbase-env.sh 文件

同上,取消 export JAVA_HOME= 所在行的注释,并将 Java 路径补全(同上 JAVA_HOME

修改 hbase-env.sh 文件

配置 hbase-site.xml

1
2
3
4
5
6
<configuration>
        <property>
                <name>hbase.rootdir</name>
                <value>file:///usr/local/hbase/hbase-tmp</value>
        </property>
</configuration>

在启动 HBase 前需要设置属性 hbase.rootdir,用于指定 HBase 数据的存储位置,因为如果不设置的话,hbase.rootdir默认为 /tmp/hbase-${user.name},这意味着每次重启系统都会丢失数据。

可以自行指定位置

输入

1
start-hbase.sh

启动 HBase 服务,访问 http://localhost:16010,如有页面说启动成功

输入 jps 查看服务状态,如下为 hadoophbase 都启动完成的状态:

jps

(可选)安装 IntelliJ IDEA

Jetbrain 的开发包可以凭 edu 邮箱学生认证全部免费使用,直接官网下载即可

官网:IntelliJ IDEA – the Leading Java and Kotlin IDE

学生认证:Free Educational Licenses - Community Support

安装激活成功后需要手动导入 hadoop jre

新建项目后,点击左上角工具栏 File -> Project Structure

进入 Modules 栏,点击加号,选择 JARs or Directories

选择 /opt/homebrew/Cellar/hadoop/3.3.4/libexec/share/hadoop 目录下的所有文件夹,如下所示六个文件夹

即可正常调用 jar

(可选)替代本地库

本地库用于提升一些操作的性能(Java 不够快),并且弥补 Java 类库的不足,Hadoop 为某些组件提供了自己的本地实现,保存在一个独立的动态链接的库里,在 类 Unix 平台上名为 libhadoop.so

使用 homebrew 安装不会带上本地库,因此每次执行 hdfs 操作时都会提示警告

有两种解决方式:

  1. 忽略Warning提示

    1
    2
    
    cd /opt/homebrew/Cellar/hadoop/3.3.4/libexec/etc/hadoop
    vim log4j.properties
    

    log4j.properties 配置文件中追加

    1
    
    log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR
    

    以忽略 ERROR 以下级别的提示

  2. 下载对应版本编译好的本地库

    下载地址:healchow/hadoop-native-macos: The Hadoop native libraries for macOS

    点击 Code 下的 Download Zip 下载仓库,选择 ARM 目录下的对应版本,将文件复制到 ${HADOOP_HOME}/lib/native 目录下

    这里的 HADOOP_HOME 就是 /opt/homebrew/Cellar/hadoop/{版本号}/libexec

    层级如下

    随后在命令行输入

    1
    
    hadoop checknative -a
    

    查看本地库是否被正确加载

    1
    2
    3
    4
    5
    6
    7
    8
    
    Native library checking:
    hadoop:  true /opt/homebrew/Cellar/hadoop/3.3.4/libexec/lib/native/libhadoop.dylib
    zlib:    false
    zstd  :  false
    bzip2:   false
    openssl: false build does not support openssl.
    ISA-L:   false libhadoop was built without ISA-L support
    PMDK:    false The native code was built without PMDK support.
    

    在 hadoop 后显示了 true,说明加载成功了,其他的本地库也同理可以按需安装

    加载成功之后就不会再显示 Warning 了

Built with Hugo
主题 StackJimmy 设计