Java技术栈 —— Hadoop入门(一)

news2024/9/29 9:37:17

Java技术栈 —— Hadoop入门(一)

  • 一、Hadoop第一印象
  • 二、安装Hadoop
  • 三、Hadoop解析
    • 3.1 Hadoop生态介绍
      • 3.1.1 MapReduce - 核心组件
      • 3.1.2 HDFS - 核心组件
      • 3.1.3 YARN - 核心组件
      • 3.1.4 其它组件
        • 3.1.4.1 HBase
        • 3.1.4.2 Hive
        • 3.1.4.3 Spark

一、Hadoop第一印象

Apache Hadoop ( /həˈduːp/) is a collection of open-source software utilities that facilitates using a network of many computers to solve problems involving massive amounts of data and computation. It provides a software framework for distributed storage and processing of big data using the MapReduce programming model.[2]
Apache Hadoop是一款开源软件,它集合了各种实用程序,这些实用程序通过计算机集群组成的网络,来帮助解决涉及大量数据和计算的问题。它使用MapReduce程序模型,为分布式存储与大数据计算提供了软件架构。

上面是Wiki的定义,Hadoop也称为大数据存储与计算的基础架构。

一、参考文章或视频链接
[1] Apache Hadoop - Apache website
[2] Apache Hadoop - Wiki

二、安装Hadoop

在执行文章[2]所说的./sbin/start-dfs.sh时,我遇到了一个报错

programmer@pc-ubuntu:~/DevelopEnvironment/hadoop-3.3.6$ ./sbin/start-dfs.sh 
Starting namenodes on [localhost]
localhost: ssh: connect to host localhost port 22: Connection refused
Starting datanodes
localhost: ssh: connect to host localhost port 22: Connection refused
Starting secondary namenodes [pc-ubuntu]
pc-ubuntu: ssh: connect to host pc-ubuntu port 22: Connection refused

根据参考文章[3],需要提前准备环境与配置端口

sudo apt -y install openssh-server openssh-client
# {your_hadoop_home}/etc/hadoop/hadoop-env.sh file
export HADOOP_SSH_OPTS="-p 22"      

pdshParallel Distributed SHell并行分布式 Shell的缩写,是一种并行分布式运维工具。它可以并行执行对远程目标主机的操作,在有批量执行命令或分发任务的运维需求时,使用这个命令可达到事半功倍的效果。同时,PDSH还支持交互模式,当要执行的命令不确定时,可直接进入PDSH命令行,非常方便。
PDSH通常用于大批量服务器的配置、部署、文件复制等运维操作,在使用时,仍需要配置本地主机和远程主机间的单向SSH信任。另外,PDSH还附带了pdcp命令,此命令可以将本地文件批量复制到远程的多台主机上,这在大规模的文件分发环境下是非常有用的。但我在安装pdsh后反而出现了访问拒绝,请看参考文章[4]和[5]。

配置免密登录时的命令解析:

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

这三行命令是用于生成和配置 SSH 密钥以进行安全的远程登录的操作。

  • ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    ssh-keygen:是 OpenSSH 提供的一个工具,用于生成 SSH 密钥对。
    -t rsa:指定要生成的密钥类型为 RSA。
    -P ‘’:表示为空密码,即不设置密码保护私钥。
    -f ~/.ssh/id_rsa:指定生成的私钥文件的位置和名称。
    执行这个命令后,会在指定的目录下生成一个名为id_rsa的私钥文件和一个名为id_rsa.pub的公钥文件。
  • cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    cat:是一个文件操作命令,用于读取文件的内容并输出到标准输出。
    ~/.ssh/id_rsa.pub:表示读取私钥文件id_rsa中的公钥内容。
    >> ~/.ssh/authorized_keys:表示将公钥内容追加到授权文件authorized_keys的末尾。
    执行这个命令后,会将公钥内容添加到authorized_keys文件中,用于授权远程主机使用该公钥进行身份验证。
  • chmod 0600 ~/.ssh/authorized_keys
    chmod:是一个文件权限操作命令,用于修改文件的权限。
    0600:表示设置文件的权限为只有所有者有读写权限,其他人没有任何权限。
    ~/.ssh/authorized_keys:表示要修改权限的文件。
    执行这个命令后,会将authorized_keys文件的权限设置为只有所有者可以读写,以增强安全性。
  • 综合起来,这三行命令的目的是生成 SSH 密钥对,将公钥添加到授权文件中,并设置授权文件的权限,以便进行安全的 SSH 远程登录。

最后按照参考文章[2]的描述,单机版Hadoop安装完成。

Hadoop 3.0.0版本后,访问地址从http://localhost:50070 变更为http://localhost:9870[6] 看到如下访问效果后,你就可以愉快的开始与Hadoop玩耍了。

在这里插入图片描述

二、参考文章或视频链接
[1] Apache Hadoop - Apache website
重点参考:[2] 《史上最详细的hadoop安装教程(含坑点)》- CSDN
[3] Hadoop: connect to host localhost port 22: Connection refused when running start-dfs.sh - Stackoverflow
这篇说卸载pdsh[4] 安装pdsh后反而pdsh Permission denied的问题 - Solution1
这篇说修改pdsh配置[5] 安装pdsh后反而pdsh Permission denied的问题 - Solution2
[6] http localhost 50070 not working in HADOOP

三、Hadoop解析

3.1 Hadoop生态介绍

各程序员要紧紧围绕在以Hadoop为核心的大数据生态周围,高举分布式的旗帜,发扬并行计算、高扩展性、高容错、高吞吐量、低成本的优势,真正做到学懂弄通、学深悟透、学以致用,扎实推进编程能力建设工作,久久为功,为大数据时代的产业兴旺添砖加瓦。

看到hadoop官网的左侧导航栏[1],可以证明,三大组件是HDFS、MapReduce、YARN,曾经被我弄混的HBase等词汇,则是Hadoop生态下的其中一个模块,而非Hadoop本身的核心组件,在更详细的介绍Hadoop之前,这些边界必须厘清,不然总有弄糊涂的一天。
Apache Hadoop的前身是Google的 Google File System (GFS),GFS也是一个分布式的文件系统,以下是一些Hadoop的特点

  • Hadoop是高度可扩展
  • Hadoop相比于RDBMS关系型数据库管理系统,具有水平扩展的能力(即可以用堆机器的方式扩展系统,而非单独把一台机器配置拉满)
  • Hadoop会创建并保存数据副本,以使其具有容错性
  • Hadoop具有经济性,组成它的机器一般都很便宜。
  • Hadoop利用数据的局部性,去在存储数据的节点上处理数据,而不是将数据通过网络传来传去,从而浪费带宽。这一点特性就像你想看一本书,但是不能外借,你亲自去图书馆阅读
  • Hadoop可以处理结构化,半结构化,无结构化的数据。这一点在当今时代尤为重要,因为大部分数据都没有格式定义的。

图1 - Hadoop 生态框架 —— 参考文章[2] PS:此图没画出模块之间的关系

图2 - Hadoop 生态框架 —— 参考文章[6]

3.1 参考文章或视频链接
[1] Hadoop Documentation- Apache
重点阅读:[2] Introduction to the Hadoop Ecosystem for Big Data and Data Engineering - Analytics Vidhya
[3] 大数据学习(二)Hadoop - 知乎
[4] Hadoop Ecosystem
[5] Hadoop Ecosystem Components and Its Architecture
[6] Hadoop Ecosystem - A Comprehensive Guide for 2024

3.1.1 MapReduce - 核心组件

话说天下大势,合久必分,分久必合。——《三国演义》
但是分合之后,将是不同的历史阶段,就像化学反应也是原子的分合,经过剧烈的反应之后,事物已经产生了质的变化,这体现了一个道理:“内部矛盾是事物发展的源泉,决定着事物的性质和发展方向”。

MapReduce由Google公司提出,论文名称是 MapReduce: Simplified Data Processing on Large Clusters,作者是Jeffrey Dean and Sanjay Ghemawat,第一个作者Jeffrey Dean牛到什么程度?他是Tensorflow项目的负责人😮,太牛了,牛的冒烟了,已经翱翔了,这谁跟的了啊,这个人假以时日,必成大器,但是我个人猜测他能成为Tensorflow项目的负责人,刨去纯技术的因素,更多的是因为Jeffrey Dean在Google是元老,有着丰富的人脉关系与项目管理经验,从其个人履历来看,他过去的项目经历并没有与机器学习等AI方向有关联,但保不准人家就是厉害,各个方面都NB,其余请自行百度。可以看到下面这张图,Map就是拆解,Reduce就是组合,Map计算各个key对应的value,Reduce将相同的key的value整合起来。

图3 - MapReduce原理图 (来自【深入浅出讲解 MapReduce】- bilibili)

3.1.1 参考文章或视频链接
[1] MapReduce: Simplified Data Processing on Large Clusters.pdf
CSDN资源地址(免费):MapReduce: Simplified Data Processing on Large Clusters.pdf
[2] 《深入浅出讲解 MapReduce》- bilibili
[3] 《【狂野大数据】一天搞定大数据之MapReduce》- bilibili
[4] 《关于谷哥传奇工程师Jeff Dean的笑话》
[5] Jeff Dean - 百度百科
[6] 有谁可以介绍一下谷歌大牛Jeff Dean以及与他相关的事迹么? - 知乎
[7] 《Markdown 使用 Emoji 表情》- CSDN
[8] MapReduce可不可以只要Reduce不要Map?- bilibili spark中可以直接reduce

3.1.2 HDFS - 核心组件

HDFS(Hadoop Distributed File System 存储的文件系统)

3.1.3 YARN - 核心组件

YARN = Yet Another Resource Negotiator,直译为另一种资源协调者,那么意译就是Hadoop的资源管理系统

想想Hadoop的这三大核心组件,和古代的三省六部,有什么共同之处?中书省(决策)、门下省(审核)、尚书省(执行),我以为不能牵强附会,将三省的功能对应到这三大组件上,因为从功能角度来说对不上号,但是这种系统的设计思想和模式,却在Hadoop和三省六部制度中,都得到了体现,作为程序员,你能设计一个好用的系统和代码框架,理论上说,也具备设计制度的能力,从这个意义出发,你可以说,计算机里面哪有什么编程和打打杀杀,都是江湖。

注意,Linux里也有一个工具叫做yarn,Hadoop的YARN和Linux的YARN两个是不同的事物,但都有资源管理的意思在,有人说Linux里的yarn是Yet Another Replacing NPM的缩写,不过根据开发者的回答,这种说法应该只是个巧合,Stackoverflow有人提过这个问题。[1]

3.1.3 参考文章或视频链接
[1] What does yarn (package manager) (in Linux) stand for?

3.1.4 其它组件

3.1.4.1 HBase

HBase is a Column-based NoSQL database. It runs on top of HDFS and can handle any type of data. It allows for real-time processing and random read/write operations to be performed in the data.[1]

图2中,HBASE是在HDFS之上的,这也印证了 runs on top of HDFS 的说法,这里有点可以类比与MySQL底层使用B+树作为存储结构的意思了。具体可以看参考文章

3.1.4.1 参考文章或视频链接
重点阅读:[1] Introduction to the Hadoop Ecosystem for Big Data and Data Engineering - Analytics Vidhya
[2] 《Hbase 和 MySQL 的区别是什么?一文深度对比!》
[3] 《美团一面:为什么选用Hbase,Hbase和MySQL的区别是什么?》
[4] 【头条面试:请描述MySQL的B+树索引原理,B+树索引有哪些好处】- bilibili
重点观看:[5] 【B+树,B-link树,LSM树…一个视频带你了解常用存储引擎数据结构(中)】- bilibili
3.1.4.2 Hive

Hive is a distributed data warehouse system developed by Facebook. It allows for easy reading, writing, and managing files on HDFS. It has its own querying language for the purpose known as Hive Querying Language (HQL) which is very similar to SQL. This makes it very easy for programmers to write MapReduce functions using simple HQL queries.[1]
Hive是一款由Facebook开发的分布式数据仓库系统,它可以很方便的在HDFS的基础上进行文件读写与管理。Hive有自己的查询语言,名为Hive Querying Language (HQL),HQL与SQL很像,这使得程序员可以非常方便的使用HQL查询编写MapReduce的函数

由此我们可以看出Hive与HDFS也是不一样的,其具体区别

3.1.4.2 参考文章或视频链接
重点阅读:[1] Introduction to the Hadoop Ecosystem for Big Data and Data Engineering - Analytics Vidhya
[2] Hive VS HBase: What Is The Difference?
3.1.4.3 Spark

Apache Spark 是用于大数据工作负载的开源分布式处理系统。它利用内存中缓存和优化的查询执行,对任何大小的数据进行快速分析查询。它提供 Java、Scala、Python 和 R 语言的开发 API,并支持跨多个工作负载(批处理、交互式查询、实时分析、机器学习和图形处理)重用代码。[2]

3.1.4.3 参考文章或视频链接
[1] Introduction to the Hadoop Ecosystem for Big Data and Data Engineering - Analytics Vidhya
[2] What is Apache Spark?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1363513.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用通俗易懂的方式讲解:万字长文带你入门大模型

告别2023,迎接2024。大模型技术已成为业界关注焦点,你是否也渴望掌握这一领域却又不知从何学起? 本篇文章将特别针对入门新手,以浅显易懂的方式梳理大模型的发展历程、核心网络结构以及数据微调等关键技术。 如果你在阅读中收获…

NJIT数据结构期末复习

任何时候学习都不算晚&#xff0c;保持终身学习&#xff01;&#xff01;&#xff01; 数据结构期末复习 第一章 1.以下程序段的时间复杂是多少&#xff1f; int sum 0; for(i1;i<n;i) { for(j1;j<n;j) { sum; } } 答&#xff1a;O(n^2) 第二章 2.遍历单链表&…

【计算机组成原理】总复习笔记(上)

特别声明&#xff1a; 本文仅供参考&#xff0c;本文部分内容来自AI总结、网络搜集与个人实践。如果任何信息存在错误,欢迎读者批评指正。本文仅用于学习交流,不用作任何商业用途。 文章目录 第 1 章 计算机系统概述1.1 冯诺依曼计算机结构1.2 高级语言与机器级目标代码1.3 计算…

【AI】搭建Windows Linux子系统(WSL2)CUDA环境

0.准备工作 Windows本机安装CUDA Driver 首先去下载页面下载驱动文件 点击Get CUDA Driver进入下载页面&#xff0c;我看下载页面跟普通驱动下载页面相同&#xff0c;感觉应该不是单独的驱动&#xff0c;只要之前显卡已经安装好了CUDA的驱动&#xff0c;就可以先省略这一步。…

使用 CMake 和 Ninja 构建 C/C++ 项目的教程

使用 CMake 和 Ninja 构建 C/C 项目的教程 CMake 是一个跨平台的开源构建工具&#xff0c;它简化了项目的构建过程。而 Ninja 是一个快速、轻量级的构建系统&#xff0c;与 CMake 配合使用可以提高项目的构建效率。本教程将向你介绍如何使用 CMake 和 Ninja 来构建你的 C/C 项…

灰色关联分析

&#xff08;相关性分析&#xff09;反映关系有多么紧密 “在系统发展过程中&#xff0c;若两个因素变化的趋势具有一致性&#xff0c;即同步变化程度较高&#xff0c;即可谓二者关联程度较高&#xff1b;反之&#xff0c;则较低。因此&#xff0c;灰色关联分析方法&#xff0…

一文了解 DeFi 原生公链 Sei,以及钱包添加教程什么是Sei?

Sei&#xff0c;领先Layer 1公链&#xff0c;专攻加密资产交易。不局限于DeFi&#xff0c;还进军游戏、社交媒体和NFTs等领域&#xff0c;构建了多功能区块链生态系统。在众多公链中&#xff0c;Sei凭借卓越处理速度和技术创新崭露头角。独特共识机制和技术创新功不可没。作为通…

【LeetCode每日一题】2807. 在链表中插入最大公约数(模拟+求最大公约数的6中写法)

2024-1-6 文章目录 [2807. 在链表中插入最大公约数](https://leetcode.cn/problems/insert-greatest-common-divisors-in-linked-list/)思路&#xff1a;模拟求最大公约数的几种方法&#xff1a; 1.暴力枚举法2.辗转相除法3.辗转相除法 ---递归调用4.辗转相除法 ---递归调用---…

摄像头视频录制程序使用教程(Win10)

摄像头视频录制程序-Win10 &#x1f957;介绍&#x1f35b;使用说明&#x1f6a9;config.json 说明&#x1f6a9;启动&#x1f6a9;关闭&#x1f6a9;什么时候开始录制&#xff1f;&#x1f6a9;什么时候触发录制&#xff1f;&#x1f6a9;调参 &#x1f957;介绍 检测画面变化…

每日一练:LeeCode-388. 文件的最长绝对路径【字符串、栈方法】

本文是力扣LeeCode-388. 文件的最长绝对路径 学习与理解过程&#xff0c;本文仅做学习之用&#xff0c;对本题感兴趣的小伙伴可以出门左拐LeeCode。 假设有一个同时存储文件和目录的文件系统。下图展示了文件系统的一个示例&#xff1a; 这里将 dir 作为根目录中的唯一目录。…

vue3+vite +element plus日历date picker中文显示

项目情况 element-plus 默认是英文模式&#xff0c;需要中文模式的话需要设置一下&#xff1a; 项目框架&#xff08;vue3&#xff09;&#xff1a;vite JS element-plus 版本&#xff1a;&#xff08;注意版本兼容&#xff0c;element plus 较低版本&#xff1a;1.xx.xx&a…

【深度deepin】深度安装,jdk,tomcat,Nginx安装

目录 一 深度 1.1 介绍 1.2 与别的操作系统的优点 二 下载镜像文件及VM安装deepin 三 jdk&#xff0c;tomcat&#xff0c;Nginx安装 3.1 JDK安装 3.2 安装tomcat 3.3 安装nginx 一 深度 1.1 介绍 由深度科技社区开发的开源操作系统&#xff0c;基于Linux内核&#xf…

基于JAYA算法优化的Elman神经网络数据预测 - 附代码

基于JAYA算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于JAYA算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于JAYA优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针…

解决pip安装第三库echarts报错:Package would be ignored而安装失败的问题

现象&#xff1a; 尝试了很多方法都没解决 &#xff0c;最后终于突然灵光一闪找到原因&#xff08;我这是python虚拟环境&#xff0c;创建的时候会自动升级pip&#xff09; 原因&#xff1a; pip版本过高&#xff01; 想不到是这原因吧&#xff01; 解决办法&#xff1a;手动…

面向对象进阶(static关键字,继承,方法重写,super,this)

文章目录 面向对象进阶部分学习方法&#xff1a;今日内容教学目标 第一章 复习回顾1.1 如何定义类1.2 如何通过类创建对象1.3 封装1.3.1 封装的步骤1.3.2 封装的步骤实现 1.4 构造方法1.4.1 构造方法的作用1.4.2 构造方法的格式1.4.3 构造方法的应用 1.5 this关键字的作用1.5.1…

ejs默认配置 原型链污染

文章目录 ejs默认配置 造成原型链污染漏洞背景漏洞分析漏洞利用 例题 [SEETF 2023]Express JavaScript Security ejs默认配置 造成原型链污染 参考文章 漏洞背景 EJS维护者对原型链污染的问题有着很好的理解&#xff0c;并使用非常安全的函数清理他们创建的每个对象 利用Re…

DNS主从服务器、转发(缓存)服务器

一、主从服务器 1、基本含义 DNS辅助服务器是一种容错设计&#xff0c;考虑的是一旦DNS主服务器出现故障或因负载太重无法及时响应客户机请求&#xff0c;辅助服务器将挺身而出为主服务器排忧解难。辅助服务器的区域数据都是从主服务器复制而来&#xff0c;因此辅助服务器的数…

自动化文件处理软件FileFlows

什么是 FileFlows &#xff1f; FileFlows 是一款文件处理软件&#xff0c;可以转码、转换、压缩和管理任何文件类型&#xff0c;包括视频、音频、图像和漫画书。它支持多个平台、硬件编码器以及强大的流程和报告功能。 FileFlows 通过监视“库”&#xff08;文件夹/路径&#…

3D人体姿态估计(教程+代码)

3D人体姿态估计是指通过计算机视觉和深度学习技术&#xff0c;从图像或视频中推断出人体的三维姿态信息。它是计算机视觉领域的一个重要研究方向&#xff0c;具有广泛的应用潜力&#xff0c;如人机交互、运动分析、虚拟现实、增强现实等。 传统的2D人体姿态估计方法主要关注通…

SPRING BOOT发送邮件验证码(Gmail邮箱)

SPRING BOOT邮件发送验证码 一、Gmail邮箱配置 1、进入Gmail(https://mail.google.com) 2、打开谷歌右上角设置 3、启用POP/IMP 4、启用两步验证(https://myaccount.google.com/security) 5、建立应用程式密码 6、复制保存应用程式密码 二、代码 1、引入依赖 <d…