Hadoop概览以及编译hadoop说明

一、Hadoop概述

        Hadoop 是一个用于跨计算机集群存储和处理大型数据集的软件框架。它旨在处理大数据,即传统数据库无法有效管理的极其庞大和复杂的数据集。Hadoop不是传统意义上的数据仓库,因为它们的用途不同,架构也不同。Hadoop 是一个跨分布式计算机集群存储和处理大量非结构化和半结构化数据的框架。它专为处理大数据而设计,并支持使用 HDFS 和 MapReduce 等技术对大型数据集进行批处理。

        而数据仓库是针对查询和分析进行了优化的结构化数据集中存储库。它通常用于存储来自各种来源的结构化数据,将其组织成模式,并提供快速访问以用于报告和分析目的。

1、四大组件

        Hadoop 分布式文件系统 (HDFS):这是一个存储系统,它将大文件分解成小块并将它们分布在集群中的多台计算机上。它确保数据可靠性并支持跨集群并行处理数据。

        MapReduce:这是一种编程模型,用于在集群中并行处理和分析大型数据集。它由两个主要任务组成:Map,处理并将输入数据转换为中间键值对;Reduce,聚合和汇总中间数据以生成最终输出。

        YARN(资源协商器):YARN 是 Hadoop 的资源管理和作业调度组件。它将资源(CPU、内存)分配给集群上运行的各种应用程序并有效地管理它们的执行。

        Hadoop Common:包括其他 Hadoop 组件使用的库和实用程序。它为整个 Hadoop 生态系统提供工具和基础设施,例如身份验证、配置和日志记录。

2、特点

        Hadoop 的最大优势在于它能够高效处理大量数据。Hadoop 旨在将数据和处理任务分布到集群中的多台计算机,使其能够轻松扩展以处理传统数据库或处理系统难以管理的海量数据集。让用户能够存储、处理和分析大量数据。

3、架构

        Hadoop 是一个用 Java 编写的 Apache 开源框架,它允许使用简单的编程模型在计算机集群之间分布式处理大型数据集。Hadoop 框架应用程序在提供跨计算机集群的分布式存储和计算的环境中工作。

        Hadoop 的核心有两个主要层,即处理/计算层(MapReduce),以及存储层(Hadoop分布式文件系统)。

        Hadoop 分布式文件系统 (HDFS) 基于 Google 文件系统 (GFS),提供旨在在商用硬件上运行的分布式文件系统。它与现有的分布式文件系统有许多相似之处。但是,它与其他分布式文件系统的区别也很大。它具有高度的容错能力,旨在部署在低成本硬件上。它提供对应用程序数据的高吞吐量访问,适用于具有大型数据集的应用程序。

        Hadoop 受 GNU/Linux 平台及其变体的支持。虽然 Hadoop 的核心组件是用 Java 编写的,理论上可以运行在任何支持 Java 的平台上,包括 Windows,但 Hadoop 官方并不推荐在 Windows 上运行。

二、大数据

        传统方法是企业将拥有一台计算机来存储和处理大数据。为了存储,程序员将借助他们选择的数据库供应商,例如 Oracle、IBM 等。在这种方法中,用户与应用程序交互,应用程序则负责处理数据存储和分析部分。

        这种方法对于那些处理数据量较少(标准数据库服务器可以容纳,或者处理数据的处理器可以承受)的应用程序来说效果很好。但是,当涉及到处理大量可扩展数据时,单一数据库的瓶颈立刻就显现出来了。

        Google 使用一种名为 MapReduce 的算法解决了这个问题。该算法将任务分成小部分并分配给多台计算机,然后从这些计算机中收集结果,将结果整合在一起,形成结果数据集。利用Google提供的解决方案,Doug Cutting和他的团队开发了一个名为HADOOP的开源项目。

        Hadoop 使用 MapReduce 算法运行应用程序,其中数据与其他数据并行处理。简而言之,Hadoop 用于开发能够对大量数据进行完整统计分析的应用程序。

三、手动编译

        在源码的BUILDING.txt文件里面,明确说明了需要的相关软件版本。

1、创建了一个ubuntu虚拟机

2、安装ssh、git

3、配置git

4、下载源码

git clone git@github.com:apache/hadoop.git

        git下载慢,还是选择手动下载

        从官网下载,用迅雷拽下来,然后上传到虚拟机

Apache Download MirrorsHome page of The Apache Software Foundationicon-default.png?t=N7T8https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.4.0/hadoop-3.4.0-src.tar.gz5、安装jdk

  $ sudo apt-get update
  $ sudo apt-get -y install openjdk-8-jdk

6、安装maven

$ sudo apt-get -y install maven

7、安装Native libraries

$ sudo apt-get -y install build-essential autoconf automake libtool cmake zlib1g-dev pkg-config libssl-dev libsasl2-dev

8、安装GCC

        这一步,ubuntu自带了,如果是没有带的需要自己安装。有版本要求,

9、安装cmake

        同上

10、安装Protocol

$ curl -L https://github.com/protocolbuffers/protobuf/archive/refs/tags/v3.21.12.tar.gz > protobuf-3.21.12.tar.gz

$ tar -zxvf protobuf-3.21.12.tar.gz && cd protobuf-3.21.12
$ ./autogen.sh
$ ./configure
$ make -j$(nproc)
$ sudo make install

11、安装Boost

        有一些编译失败,不知道和GCC版本是否有关系,暂时没管,如果编译hadoop失败,那就再重新倒腾。

  $ curl -L https://sourceforge.net/projects/boost/files/boost/1.72.0/boost_1_72_0.tar.bz2/download > boost_1_72_0.tar.bz2
  $ tar --bzip2 -xf boost_1_72_0.tar.bz2 && cd boost_1_72_0
  $ ./bootstrap.sh --prefix=/usr/
  $ ./b2 --without-python
  $ sudo ./b2 --without-python install

12、编译

        为了快一点,跳过文档

mvn package -Pdist -DskipTests -Dtar -Dmaven.javadoc.skip=true

        环境都顺利的话,也是要编译很久,编译出来的在hadoop-dist/target目录下。

        编译结果如下图,基本各个文件夹都是sh或者cmd脚本,以及一些配置文件,只有share下面包含了大量的jar包,其中hadoop的共168个,其它的应该都是依赖的jar包。

        然后基于官方的运行安装命令就可以编辑配置文件,执行脚本运行了。当然最简单的办法还是直接下载官方编译好的来运行,这里编译的目的主要是为了测试和了解。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch 8.1官网文档梳理 - 十三、Search your data(数据搜索)

Search your data 这里有两个比较有用的参数需要注意一下 Search timeout:设置每个分片的搜索超时时间。从集群级别可以通过 search.default_search_timeout 来设置超时时间。如果在 search.default_search_timeout 设置的时间段内未完成搜索请求,就会…

京东应届生公司内网说了一句‘什么时候被pdd收购‘,结果惨遭辞退

京东应届生公司内网说了一句’什么时候被pdd收购’,结果惨遭公司开除 这个事最近在圈子讨论比较多 前二天,有一个上海交大毕业的应届生,在京东实习了9个月,好不容易转正12天后,只因在内网说了一句话,就被…

【传知代码】无监督动画中关节动画的运动表示-论文复现

文章目录 概述动画技术的演进原理介绍核心逻辑环境配置/部署方式小结 本文涉及的源码可从无监督动画中关节动画的运动表示该文章下方附件获取 概述 该文探讨了动画在教育和娱乐中的作用,以及通过数据驱动方法简化动画制作的尝试。近期研究通过无监督运动转移减少对…

python数据分析-CO2排放分析

导入所需要的package import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import datetime %matplotlib inline plt.rcParams[font.sans-serif] [KaiTi] #中文 plt.rcParams[axes.unicode_minus] False #负号 数据清洗…

汇编原理(二)

寄存器:所有寄存器都是16位(0-15),可以存放两个字节 AX,BX,CX,DX存放一般性数据,称为通用寄存器 AX的逻辑结构。最大存放的数据为2的16次方减1。可分为AH和AL,兼容8位寄存器。 字:1word 2Byte…

Mysql中表之间的关系

表之间的关系 一对一、多对一(其实就是主从关系,在从表中设置一个外键关联上主表)、多对多关系(需要一个中间表,设置两个外键,分别关联到两个表的主键) 比如订单和商品之间:一个订单…

数据安全不容小觑:.hmallox勒索病毒的防范与应对

一、引言 随着网络技术的飞速发展,网络安全问题日益凸显,其中勒索病毒作为一种极具破坏性的网络攻击手段,已在全球范围内造成了巨大的经济损失和社会影响。在众多勒索病毒中,.hmallox勒索病毒以其狡猾的传播方式和强大的加密能力…

深度学习复盘与小实现

文章目录 一、查漏补缺复盘1、python中zip()用法2、Tensor和tensor的区别3、计算图中的迭代取数4、nn.Modlue及nn.Linear 源码理解5、知识杂项思考列表6、KL散度初步理解 二、处理多维特征的输入1、逻辑回归模型流程2、Mini-Batch (N samples) 三、加载数据集1、Python 魔法方法…

JVM学习-Class文件结构②

访问标识(access_flag) 在常量池后,紧跟着访问标记,标记使用两个字节表示,用于识别一些类或接口层次的访问信息,包括这个Class是类还是接口,是否定义为public类型,是否定义为abstract类型,如果…

打造游戏APP:面向对象编程的实战演练

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、项目背景与架构概览 二、类的设计与实现 三、面向对象编程的实践 四、游戏循环与事件…

WordPress安装memcached提升网站速度

本教程使用环境为宝塔 第一步、服务器端安装memcached扩展 在网站使用的php上安装memcached扩展 第二步:在 WordPress 网站后台中,安装插件「Memcached Is Your Friend」 安装完成后启用该插件,在左侧工具-中点击Memcached 查看是否提示“U…

【Git】版本控制工具——Git介绍及使用

目录 版本控制版本控制系统的主要目标分类小结 分布式版本控制系统——GitGit特点Git与SVN的区别Git的工作机制 Git安装Git 团队协作机制团队内协作跨团队协作远程仓库远程仓库的作用有以下几个方面远程仓库操作流程/团队协作流程 Git分支什么是分支分支的好处 Git的常用命令Gi…

JDBC使用QreryRunner简化SQL查询注意事项

QreryRunner是Dbutils的核心类之一,它显著的简化了SQL查询,并与ResultSetHandler协同工作将使编码量大为减少。 注意事项 1. 使用QreryRunner必须保证实体类的变量名,和sql语句中要查找的字段名必须相同,否则查询 不到数据,会出…

K-means聚类算法详细介绍

目录 🍉简介 🍈K-means聚类模型详解 🍈K-means聚类的基本原理 🍈K-means聚类的算法步骤 🍈K-means聚类的优缺点 🍍优点 🍍缺点 🍈K-means聚类的应用场景 🍈K-mea…

公共代理IP和独享代理IP之间的区别?

公共代理IP和独享代理IP在网络应用中扮演着不同的角色,它们之间的区别主要体现在使用方式、性能、安全性以及隐私保护等方面。以下是对这两种代理IP的详细对比和分析。 第一点就是使用的方式以及成本上的不同,公共代理IP,顾名思义&#xff0…

MySQL中, 自增主键和UUID作为主键有什么区别?

首先我们来看看, 存储自增主键和uuid的数据类型 我们知道, mysql中作为主键的通常是int类型的数据, 这个 数据从第一条记录开始, 从1开始主键往后递增, 例如我有100条数据, 那么根据主键排序后, 里面的记录从上往下一次就是1, 2, 3 ... 100, 但是UUID就不一样了, UUID是根据特殊…

基于Zookeeper的分布式锁

分布式锁的介绍 在Java的多线程部分,我们知道如果在单个jvm进程中,多个线程之间同时访问一个资源,此时会有多线程的安全问题。为了解决这个线程安全的问题,我们可以使⽤“锁”来实现。但是,多个jvm进程之间如果同时访问…

Topk问题以及二叉树的三种层序遍历和基本操作

一、Topk问题 1、问题描述 TOP-K问题:即求数据结合中前K个最大的元素或者最小的元素,一般情况下数据量都比较大。 比如:专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。 2、思路 对于Top-K问题,能想到的最简单直接的…

Go微服务: Nacos的搭建和基础API的使用

Nacos 概述 文档:https://nacos.io/docs/latest/what-is-nacos/搭建:https://nacos.io/docs/latest/quickstart/quick-start-docker/有很多种搭建方式,我们这里使用 docker 来搭建 Nacos 的搭建 这里,我们选择单机模式&#xf…

重学java 46.集合 ① Collection集合

事常与人违,事总在人为 —— 24.5.26 集合 知识导航 1.集合的特点以及作用 2.使用collection接口中的方法 3.使用迭代器迭代集合 4.ArrayList以及LinkedList的使用 5.使用增强for遍历集合 一、单列集合框架的介绍 1.长度可变的容器:集合 2.集合的特点 a.…