当前位置: 首页 > news >正文

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 解压

检查版本

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:
<configuration><property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property>
</configuration>
  • 修改 etc/hadoop/hdfs-site.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:
    ssh localhost
    
    If you cannot ssh to localhost without a passphrase, execute the following commands:
    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:
bin/hdfs namenode -format
  • Start NameNode daemon and DataNode daemon:
sbin/start-dfs.sh
  • Browse the web interface for the NameNode; by default it is available at:
    默认的地址
    NameNode - http://localhost:9870/ http://localhost:9868/

示例图
在这里插入图片描述

  • 开启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:

<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><!-- 设置历史任务的主机和端口 --><property><name>mapreduce.jobhistory.address</name><value>localhost:10020</value></property><!-- 设置网页端的历史任务的主机和端口 --><property><name>mapreduce.jobhistory.webapp.address</name><value>localhost:19888</value></property>
</configuration>

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

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:

<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><!-- 开启日志聚集功能 --> <property><name>yarn.log-aggregation-enable</name><value>true</value></property><!-- 设置日志聚集服务器地址 --> <property><name>yarn.log.server.url</name><value>localhost:19888/jobhistory/logs</value></property><!-- 设置日志保留时间为 7 天 --> <property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value></property>
</configuration>
  • Start ResourceManager daemon and NodeManager daemon:
sbin/start-yarn.sh
  • Browse the web interface for the ResourceManager 浏览器查看
    ResourceManager - http://localhost:8088/
    在这里插入图片描述
  • 启动/关闭 历史服务器
# 启动
mapred --daemon start historyserver
# 关闭
mapred --daemon stop historyserver  
  • 使用jps查看启动的应用
    在这里插入图片描述
    查看HistoryServer控制台 : http://localhost:19888

  • 另外 在初始化之后 也可以直接启动 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”

  • 烦人的警告信息
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

hadoop的bin都是在特定的机器上进行编译的,不一定能支持所有的机器,

解决办法:
首先在 hadoop-env,sh 文件添加参数

export HADOOP_HOME=/usr/local/develop/hadoop-3.3.6
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib/native"

然后可以关闭或者启动集群 进行测试下 如果告警日志没有 那就说明 hadoop的native包适用你的机器,如果还是提示 那就要编译源码了 但是网络上有 已经编译好的,如果有自己对应的版本的话 可以直接使用 GitHub 地址 https://github.com/silent-night-no-trace/mac-native-hadoop-library

good day !!!

相关文章:

  • 序章 熟悉战场篇—了解vue的基本操作
  • Mysql 安装通过mysql installer安装+配置环境+连接可视化工具
  • Ubuntu 22.04 基础环境搭建
  • 码云星辰:未来运维的技术交响曲
  • SLF4J Spring Boot日志框架
  • [HarmonyOS]第一课:从简单的页面开始
  • java多线程详细讲解
  • Grafana(三)Grafana 免密登录-隐藏导航栏-主题变换
  • 16.【TypeScript 教程】TypeScript 泛型(Generic)
  • SAP PI之Rest adapter
  • GoZero微服务个人探索之路(一)Etcd:context deadline exceeded原因探究及解决
  • Matlab数学建模算法之模拟退火算法(SA)详解
  • openssl3.2 - xx_fetch函数参数名称字符串有效值列表
  • 75、avx2 什么是计算向量化
  • 部署ATS(Apache Traffic Server)和Nginx正向代理服务性能对比
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 收藏网友的 源程序下载网
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • Angular 响应式表单 基础例子
  • ES6--对象的扩展
  • Flex布局到底解决了什么问题
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • JavaScript函数式编程(一)
  • Laravel Telescope:优雅的应用调试工具
  • Linux Process Manage
  • Mocha测试初探
  • node 版本过低
  • node入门
  • oldjun 检测网站的经验
  • Python利用正则抓取网页内容保存到本地
  • SpringBoot几种定时任务的实现方式
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 测试如何在敏捷团队中工作?
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 翻译:Hystrix - How To Use
  • 记一次删除Git记录中的大文件的过程
  • 跨域
  • 前端面试总结(at, md)
  • 设计模式 开闭原则
  • 以太坊客户端Geth命令参数详解
  • 源码安装memcached和php memcache扩展
  • 《天龙八部3D》Unity技术方案揭秘
  • # Java NIO(一)FileChannel
  • # 数据结构
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (ros//EnvironmentVariables)ros环境变量
  • (规划)24届春招和25届暑假实习路线准备规划
  • (力扣)循环队列的实现与详解(C语言)
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (转)ABI是什么
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转载)利用webkit抓取动态网页和链接
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)