mac上搭建 hadoop 伪集群

1. hadoop介绍

Hadoop是Apache基金会开发的一个开源的分布式计算平台,主要用于处理和分析大数据。Hadoop的核心设计理念是将计算任务分布到多个节点上,以实现高度可扩展性和容错性。它主要由以下几个部分组成:

HDFS (Hadoop Distributed File System):HDFS是Hadoop的分布式文件系统,具有较高的读写速度,很好的容错性和可伸缩性,为海量的数据提供了分布式存储。其冗余数据存储的方式很好地保证了数据的安全性。

MapReduce:MapReduce是一种用于并行处理大数据集的软件框架(编程模型)。用户可在无需了解底层细节的情况下,编写MapReduce程序进行分析和处理分布式文件系统上的数据,MapReduce保证了分析和处理数据的高效性。

YARN (Yet Another Resource Negotiator):YARN是Hadoop2.0以后引入的另一个核心技术,它是一个任务调度和集群资源管理系统。

2. 部署

2.1 下载

官方下载日志如下

https://dlcdn.apache.org/hadoop/common/

这里选择 最新的3.3.6

2.2 解压

检查版本

shell 复制代码
bin/hadoop version
2.3 配置
  • 配置 java home etc/hadoop/hadoop-env.sh
    #注意修改为自己的
    export JAVA_HOME=/usr/local/develop/java/zulu-jdk17.0.7
  • 修改 etc/hadoop/core-site.xml:
xml 复制代码
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>
  • 修改 etc/hadoop/hdfs-site.xml:
xml 复制代码
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
</configuration>
  • 检查ssh
    Setup passphraseless ssh
    Now check that you can ssh to the localhost without a passphrase:

    shell 复制代码
    ssh localhost

    If you cannot ssh to localhost without a passphrase, execute the following commands:

    shell 复制代码
    ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 0600 ~/.ssh/authorized_keys

    注意已经存在ssh key的话 就不要重写了 不然会影响到 你之前配置的ssh key
    mac上系统配置了 也不行的话 参考 https://blog.csdn.net/a15835774652/article/details/135572420

2.4 开始启动

  • 首先启动 hdfs 首次需要format文件系统 Format the filesystem:
shell 复制代码
bin/hdfs namenode -format
  • Start NameNode daemon and DataNode daemon:
shell 复制代码
sbin/start-dfs.sh

示例图

  • 开启YARN

    You can run a MapReduce job on YARN in a pseudo-distributed mode by setting a few parameters and running ResourceManager daemon and NodeManager daemon in addition.

    The following instructions assume that 1. ~ 4. steps of the above instructions are already executed.

  • Configure parameters as follows:

    etc/hadoop/mapred-site.xml:

xml 复制代码
<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>

etc/hadoop/yarn-env.sh (注意这个jdk8之后 必须要加 不然yarn启动会报错)

xml 复制代码
export JAVA_HOME=/usr/local/develop/java/zulu-jdk17.0.7
export YARN_RESOURCEMANAGER_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED"
export YARN_NODEMANAGER_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED"

etc/hadoop/yarn-site.xml:

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_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>
  • Start ResourceManager daemon and NodeManager daemon:
shell 复制代码
sbin/start-yarn.sh
  • Browse the web interface for the ResourceManager 浏览器查看
    ResourceManager - http://localhost:8088/
  • 使用jps查看启动的应用
  • 另外 在初始化之后 也可以直接启动 sbin/start-all.sh 这个命令会启动 hdfs 和 yarn (生产环境慎用)
  • 关闭 同理 sbin/stop-dfs.sh 停止 hdfs sbin/./stop-yarn.sh 停止yarn 也可以直接 sbin/stop-all.sh 来关闭hdfs和yarn (生产环境慎用)

以上就完成了 hadoop的伪集群搭建

可能会遇到的问题

启动yarn后 在jps中无法看到 resourcemanager

在日志文件中 发现 yarn 启动失败了 Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte\[\],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @4d7c417d

在yarn-env.sh 添加配置即可

export JAVA_HOME=/usr/local/develop/java/zulu-jdk17.0.7

export YARN_RESOURCEMANAGER_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED"

export YARN_NODEMANAGER_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED"

good day !!!

相关推荐
坐吃山猪20 分钟前
ES08-ES使用IK分词器
大数据·elasticsearch·搜索引擎
泡干脆面就番茄36 分钟前
Hive-DML:Load-Insert-Export-Import四种数据进出方式
大数据·数据仓库·hive·hadoop
加百力39 分钟前
沪指险守3700点,券商、银行午后发力,创业板跌近3%,半导体尾盘反扑,恒科指跌3%,科网股普跌
大数据
eBest数字化转型方案1 小时前
快消渠道 AI 落地路线:拍照、数据、决策三阶段的工程逻辑
大数据·人工智能
百胜软件@百胜软件2 小时前
百胜软件黄飞:让AI真正走进零售,把不确定性变成“胜券在握”
大数据·人工智能·零售
2501_915918412 小时前
在 Xcode 中运行和调试单元测试的完整指南
ide·vscode·macos·ios·单元测试·个人开发·xcode
4SAPI2 小时前
官方API、API聚合平台与自建LLM Gateway:三种方案怎么选
大数据·人工智能·gateway·php
ManageEngineITSM2 小时前
工单优先级怎么定?影响×紧急度矩阵的设计与落地方法
java·大数据·运维·前端·数据库·变更管理
智商网输送线配件2 小时前
电子制造零散耗材补货实战:小批量混批采购平台怎么选才不停机?
大数据·服务器·前端·数据库·自动化
程序员IT行业2 小时前
广东行政事业单位物资管理系统选型:先定功能需求,再定部署架构
大数据·架构