Hadoop总结

本文详细介绍了Hadoop的起源、发展、核心组件及其优缺点。Hadoop是一个开源的分布式计算框架,包括HDFS(分布式文件系统)、YARN(资源调度框架)和MapReduce(分布式处理)。HDFS提供了高容错性和可扩展性,适合大规模数据存储。YARN作为资源调度系统,解决了多框架资源统一调度的问题。MapReduce则提供了离线数据处理能力。此外,文章还涵盖了Hadoop环境的搭建、shell操作和实际应用场景。
摘要由CSDN通过智能技术生成

Hadoop总结

Hadoop概述

什么是Hadoop

  • Hadoop名字的由来

    • 作者:Doug cutting
    • Hadoop项目作者的孩子给一个棕黄色的大象样子的填充玩具的命名

    在这里插入图片描述

  • Hadoop的概念:

    • Apache™ Hadoop® 是一个开源的, 可靠的(reliable), 可扩展的(scalable)分布式计算框架
      • 允许使用简单的编程模型跨计算机集群分布式处理大型数据集
      • 可扩展: 从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储
      • 可靠的: 不依靠硬件来提供高可用性(high-availability),而是在应用层检测和处理故障,从而在计算机集群之上提供高可用服务
  • Hadoop能做什么?

    • 搭建大型数据仓库
    • PB级数据的存储 处理 分析 统计等业务
      • 搜索引擎

      • 日志分析

      • 数据挖掘

      • 商业智能(Business Intelligence,简称:BI)

        商业智能通常被理解为将企业中现有的数据(订单、库存、交易账目、客户和供应商等数据)转化为知识,帮助企业做出明智的业务经营决策的工具。从技术层面上讲,是数据仓库、数据挖掘等技术的综合运用。

  • Hadoop发展史

    • 2003-2004年 Google发表了三篇论文

      • GFS:Google的分布式文件系统Google File System
      • MapReduce: Simplified Data Processing on Large Clusters
      • BigTable:一个大型的分布式数据库
    • 2006年2月Hadoop成为Apache的独立开源项目( Doug Cutting等人实现了GFS和MapReduce机制)。

    • 2006年4月— 标准排序(10 GB每个节点)在188个节点上运行47.9个小时。

    • 2008年4月— 赢得世界最快1TB数据排序在900个节点上用时209秒。

    • 2008年— 淘宝开始投入研究基于Hadoop的系统–云梯。云梯总容量约9.3PB,共有1100台机器,每天处理18000道作业,扫描500TB数据。

    • 2009年3月— Cloudera推出CDH(Cloudera’s Dsitribution Including Apache Hadoop)

    • 2009年5月— Yahoo的团队使用Hadoop对1 TB的数据进行排序只花了62秒时间。

    • 2009年7月— Hadoop Core项目更名为Hadoop Common;

    • 2009年7月— MapReduce和Hadoop Distributed File System (HDFS)成为Hadoop项目的独立子项目。

    • 2012年11月— Apache Hadoop 1.0 Available

    • 2018年4月— Apache Hadoop 3.1 Available

    • 搜索引擎时代

      • 有保存大量网页的需求(单机 集群)
      • 词频统计 word count PageRank
    • 数据仓库时代

      • FaceBook推出Hive
      • 曾经进行数分析与统计时, 仅限于数据库,受数据量和计算能力的限制, 我们只能对最重要的数据进行统计和分析(决策数据,财务相关)
      • Hive可以在Hadoop上运行SQL操作, 可以把运行日志, 应用采集数据,数据库数据放到一起分析
    • 数据挖掘时代

      • 啤酒尿不湿
      • 关联分析
      • 用户画像/物品画像
    • 机器学习时代 广义大数据

      • 大数据提高数据存储能力, 为机器学习提供燃料
      • alpha go
      • siri 小爱 天猫精灵
Hadoop核心组件
  • Hadoop是所有搜索引擎的共性问题的廉价解决方案

    • 如何存储持续增长的海量网页: 单节点 V.S. 分布式存储
    • 如何对持续增长的海量网页进行排序: 超算 V.S. 分布式计算
    • HDFS 解决分布式存储问题
    • MapReduce 解决分布式计算问题
  • Hadoop Common: The common utilities that support the other Hadoop modules.(hadoop的核心组件)

  • Hadoop Distributed File System (HDFS™): A distributed file system that provides high-throughput access to application data.(分布式文件系统)

    • 源自于Google的GFS论文, 论文发表于2003年10月
    • HDFS是GFS的开源实现
    • HDFS的特点:扩展性&容错性&海量数量存储
    • 将文件切分成指定大小的数据块, 并在多台机器上保存多个副本
    • 数据切分、多副本、容错等操作对用户是透明的
  • 下面这张图是数据块多份复制存储的示意

    • 图中对于文件 /users/sameerp/data/part-0,其复制备份数设置为2, 存储的BlockID分别为1、3。
    • Block1的两个备份存储在DataNode0和DataNode2两个服务器上
    • Block3的两个备份存储在DataNode4和DataNode6两个服务器上

在这里插入图片描述

  • Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.

    • 分布式计算框架
    • 源于Google的MapReduce论文,论文发表于2004年12月
    • MapReduce是GoogleMapReduce的开源实现
    • MapReduce特点:扩展性&容错性&海量数据离线处理

    在这里插入图片描述

  • Hadoop YARN: A framework for job scheduling and cluster resource management.(资源调度系统)

    • YARN: Yet Another Resource Negotiator

    • 负责整个集群资源的管理和调度

    • YARN特点:扩展性&容错性&多框架资源统一调度

      在这里插入图片描述

Hadoop优势
  • 高可靠
    • 数据存储: 数据块多副本
    • 数据计算: 某个节点崩溃, 会自动重新调度作业计算
  • 高扩展性
    • 存储/计算资源不够时,可以横向的线性扩展机器
    • 一个集群中可以包含数以千计的节点
    • 集群可以使用廉价机器,成本低
  • Hadoop生态系统成熟

分布式文件系统 HDFS

HDFS架构
  • 1个NameNode/NN(Master) 带 DataNode/DN(Slaves) (Master-Slave结构)
  • 1个文件会被拆分成多个Block
  • NameNode(NN)
    • 负责客户端请求的响应
    • 负责元数据(文件的名称、副本系数、Block存放的DN)的管理
      • 元数据 MetaData 描述数据的数据
    • 监控DataNode健康状况 10分钟没有收到DataNode报告认为Datanode死掉了
  • DataNode(DN)
    • 存储用户的文件对应的数据块(Block)
    • 要定期向NN发送心跳信息,汇报本身及其所有的block信息,健康状况
  • 分布式集群NameNode和DataNode部署在不同机器上

在这里插入图片描述

  • HDFS优缺点
    • 优点
      • 数据冗余 硬件容错
      • 适合存储大文件
      • 处理流式数据
      • 可构建在廉价机器上
    • 缺点
      • 低延迟的数据访问
      • 小文件存储
HDFS设计思路
  • 分布式文件系统的设计思路:

    在这里插入图片描述

  • HDFS的设计目标

    • 适合运行在通用硬件(commodity hardware)上的分布式文件系统
    • 高度容错性的系统,适合部署在廉价的机器上
    • HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用
    • 容易扩展,为用户提供性能不错的文件存储服务
HDFS环境搭建

http://archive.cloudera.com/cdh5/cdh/5/

  • 下载java(JDK 1.7及以上)

  • Maven(3.3.9及以上)

  • hadoop 放到 /目录下

  • 然后解压到 /app目录下

    #cd /
    #wget http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.7.0.tar.gz
    #wget https://download.oracle.com/otn/java/jdk/8u271-b09/61ae65e088624f5aaa0b1d2d801acb16/jdk-8u271-linux-x64.tar.gz?AuthParam=1609064624_36802ed3834b595e16296e7570d706a3
    #wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
    #tar -zxvf 压缩包名字 -C /app/
    #tar -zxvf jdk-8u271-linux-x64.tar.gz -C /app/
    #tar -zxvf apache-maven-3.3.9-bin.tar.gz -C /app/
    #tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz -C /app/
    
    
  • 配置环境变量

    #hadoop-2.6.0-cdh5.7.0  jdk1.8.0_271
    #vi ~/.bash_profile
    export JAVA_HOME=/app/jdk1.8.0_271
    export JRE_HOME=/app/jdk1.8.0_271/jre
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
    export PATH=$JAVA_HOME/bin:$PATH
    
    export MAVEN_HOME=/app/apache-maven-3.3.9
    export PATH=$MAVEN_HOME/bin:$PATH
    
    export HADOOP_HOME=/app/hadoop-2.6.0-cdh5.7.0
    export PATH=$HADOOP_HOME/bin:$PATH
    
    #保存退出后
    #source ~/.bash_profile
    
    • 修改maven仓库在setting.xml的mirrors中添加阿里源
    #vim /app/apache-maven-3.3.9/conf/settings.xml
    <mirror>
    <id>aliyunmaven</id>
    <mirrorOf>*</mirrorOf>
    <name>阿里云公共仓库</name>
    <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
    
  • 进入到解压后的hadoop目录 修改配置文件

    • 配置文件作用

      • core-site.xml 指定hdfs的访问方式
      • hdfs-site.xml 指定namenode 和 datanode 的数据存储位置
      • mapred-site.xml 配置mapreduce
      • yarn-site.xml 配置yarn
    • 修改hadoop-env.sh

    cd /app/hadoop-2.6.0-cdh5.7.0/etc/hadoop
    vi hadoop-env.sh
    #找到下面内容添加java home
    export JAVA_HOME=/app/jdk1.8.0_271
    
    • 修改 core-site.xml 在 节点中添加
    vi core-site.xml 
    <property>
      <name>fs.default.name</name>
      <value>hdfs://hadoop-master:8020</value>
    </property>
    
    • 修改hdfs-site.xml 在 configuration节点中添加
    vi hdfs-site.xml 
     
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/app/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/app/tmp/dfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    
    
    • 修改 mapred-site.xml
    • 默认没有这个 从模板文件复制
    cp mapred-site.xml.template mapred-site.xml
    
    • 在mapred-site.xml 的configuration 节点中添加
    vi mapred-site.xml
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    
    • 修改yarn-site.xml configuration 节点中添加
    vi yarn-site.xml 
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值