上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

掌握大数据--Hadoop全面指南

guduadmin13小时前

在讲Hadoop之前我们需要知道一个问题:为什么我们学习大数据要学习Hadoop

不卖关子 原因如下:

1. 分布式存储:Hadoop提供了分布式存储系统,最著名的是Hadoop Distributed File System(HDFS)。这使得大规模数据能够分布式存储在集群中,提高了数据的容错性和可靠性。

2. 分布式计算: Hadoop的核心组件之一是MapReduce,它是一种分布式计算模型。通过MapReduce,可以对大规模数据进行并行处理,从而加速计算过程,特别是对于需要处理海量数据的任务。

3. 扩展性: Hadoop是一个高度可扩展的系统,能够容纳成百上千台服务器。这意味着随着数据规模的增加,可以简单地通过添加更多的计算节点来提高系统的性能。

4. 容错性: Hadoop具有强大的容错机制。在一个大规模的集群中,由于硬件故障等原因,节点可能会失败。Hadoop能够自动检测故障,并在其他节点上重新执行任务,保障数据的完整性。

5. 开源生态系统:Hadoop是一个开源项目,具有庞大的社区支持。它的生态系统包括了许多相关工具和框架,如Hive(数据仓库)、Pig(数据流编程)、HBase(分布式数据库)等,为大数据处理提供了全面的解决方案。

6. 行业标准: Hadoop已经成为处理大数据的事实标准。许多大型企业和组织都在使用Hadoop来存储和分析海量数据。因此,学习Hadoop使你更容易适应和贡献于大数据领域。

那我们便正式开始学习Hadoop

1.分布式和集群介绍

  • 分布式: 多台机器做不同的事情, 然后组成1个整体.

  • 集群: 多台机器做相同的事情.

  • 多台机器既可以组成 中心化模式(主从模式), 也可以组成 去中心化模式(主备模式)

  • 我们用比较生动的语言描述一下让大家更好理解 我们先想象一个饭店

  • 单机模式就是一个人买菜切菜炒菜,但是一个人做所有事压力太大,很容易倒下,如果这个人倒下了那么饭店就停业。

  • 分布式就相当于三个人,一个负责买菜一个负责洗菜切菜另一个负责炒菜。分工均匀,不会让人太累。但是如果任何一个人出了问题,那么饭店也是无法营业的。

  • 集群就相当于三个人,每一个人都负责买菜 洗菜 切菜 炒菜 这样任何一个人出现问题,饭店也可以正常营业。

  • 分布式集群就相当于饭店很大有很多人,几个人负责买菜,几个人负责切菜洗菜,几个人负责炒菜。任何人出了问题都不会影响饭店营业

    掌握大数据--Hadoop全面指南,第1张

    2.Hadoop框架国内外应用

    • 国外

      • Yahoo雅虎, 节点4.2W+, 超10W核, 总存储350PB+, 每月提交作业 1000W+

    • 国内

      • 阿里巴巴, 节点3000+, 超4W核心, 内存超100TB, 每月提交作业 450W+

    • Hadoop的组成

      • HDFS: 分布式存储框架

      • MapReduce: 分布式计算框架

      • Yarn: 任务接收和调度器

      3. Hadoop的架构图

      Hadoop1.X架构

      HDFS: Hadoop Distributed FileSystem分布式文件存储系统

      掌握大数据--Hadoop全面指南,第2张

      namenode: 主节点

      1.管理整个HDFS集群

      2.维护和管理元数据

      问:什么是元数据(metadata)?答:描述数据的数据就被称之为: 元数据例如: 图书在哪层,哪个区域,哪个书架.

      文件的存储路径,大小,时间,权限.

      SecondaryNameNode: 辅助节点辅助namenode管理元数据的

      datanode: 从节点

      1.维护和管理源文件

      2.负责数据的读,写操作

      3.定时向namenode报活

      掌握大数据--Hadoop全面指南,第3张

      JobTracker: 主节点

      1.负责任务的接收

      2.负责任务的调度

      3.负责任务的监控

      4.负责资源的调度和分配.

      TaskTracker:从节点负贡接收并执行JobTracker分配过来的计算任务

      JobTracker的任务过于繁重,容易宕机,存在: 单点故障的问题

      Hadoop2.X, 3.X 架构= HDFS + MapReduce + Yarn

      掌握大数据--Hadoop全面指南,第4张

      HDFS集群与Hadoop 1 没有不同,不同的是另一边 Hadoop2/3没有MapReduce集群的概念

      掌握大数据--Hadoop全面指南,第5张

      Hadoop集群高可用模式

      重点来了Hadoop集群高可用模式

      掌握大数据--Hadoop全面指南,第6张

      4.Hadoop集群环境初体验

      • 搭建方式

        • 方式1: Standalone mode 单机模式

          把所有的服务(namenode, SecondaryNameNode, datanode, ResourceManager, nodemanager)装到1台机器, 适用于: 学习, 调试.

        • 方式2: Cluster mode 集群模式

          node1: namenode, datanode, ResourceManager, nodemanager

          node2: SecondaryNameNode, datanode, nodemanager

          node3: datanode nodemanager

        掌握大数据--Hadoop全面指南,第7张

        Hadoop集群环境搭建我们后面在将这里就不做冗余阐述。

        1. 在node1中执行 start-all.sh 命令, 即可启动Hadoop集群.

        2. 然后在node1中单独运行 mapred --daemon start historyserver 启动历史服务.

        3. 然后在三台虚拟机中分别输入 jps 查看服务

        4. 之后就可以在浏览器中输入如下的的端口号进行访问了.

          HDFS的WebUI界面: ip:9870 细节: 如果是Hadoop2.X, 端口号是: 50070

          Yarn的WebUI界面: ip:8088, 只记录本次启动Hadoop集群至关闭, 所有的计算任务.

          历史服务的WebUI界面: ip:19888, 记录Hadoop从搭建好至现在, 所有的计算任务.

        5.Hadoop之MapReduce初体验

        Hadoop框架提供了MapReduce的测试包, 具体如下

        掌握大数据--Hadoop全面指南,第8张

        如何使用上述的测试包, 计算圆周率:

         

        # 建议cd先进入到Hadoop提供的MR的测试包所在的路径下:
        cd /export/server/hadoop/share/hadoop/mapreduce
        # 执行MR包(MR任务的)格式:                     
        yarn jar hadoop-mapreduce-examples-3.3.0.jar pi 2 50
        # 上述格式解释:
        yarn jar                                固定格式, 说明要把某个jar包交给yarn调度执行.
        hadoop-mapreduce-examples-3.3.0.jar        Hadoop提供的MR任务的测试包
        pi                                        要执行的任务名
        2                                        表示MapTask的任务数, 即: 几个线程来做这个事儿.
        50                                        投点数, 越大, 计算结果越精准.
        

        如何使用上述的测试包, 计算: 单词的次数

        # 建议cd先进入到Hadoop提供的MR的测试包所在的路径下:
        cd /export/server/hadoop/share/hadoop/mapreduce
        # 执行MR包(MR任务的)格式:	                 
        yarn jar hadoop-mapreduce-examples-3.3.0.jar wordcount 数据源文件路径 目的地目录路径
        # 上述格式解释:
        数据源文件路径		# 必须是HDFS的文件路径, 即: 要进行单词统计的文件(绝对)路径
        目的地目录路径		# 必须是HDFS的目录路径, 且该目录必须不存在, 因为MR结果是 覆盖写入.
        # 细节: HDFS只支持 绝对路径, 不支持相对路径, 且HDFS的路径和Linux一样, 都是 /开头的. 
        # 示例
        yarn jar hadoop-mapreduce-examples-3.3.0.jar wordcount hdfs://node1:8020/input/word.txt hdfs://node1:8020/output
         
        # 上述的 hdfs://node1:8020/ 是完整写法, 8020是HDFS的客户端地址, 可以简写为: 
        yarn jar hadoop-mapreduce-examples-3.3.0.jar wordcount /input/word.txt /output

        6.HDFS的特点

        • HDFS文件系统可存储超大文件,时效性稍差。

        • HDFS具有硬件故障检测和自动快速恢复功能。

        • HDFS为数据存储提供很强的扩展能力。

        • HDFS存储一般为一次写入,多次读取,只支持追加写入,不支持随机修改。

        • HDFS可在普通廉价的机器上运行。

          7.HDFS的架构图

          掌握大数据--Hadoop全面指南,第9张

          心跳机制:

          1.datanode会定时(3秒)向namenode发送心跳包,告诉namenode,我还活着.2.如果超过一定时间(630秒),namenode没收到datanode的心跳包,就认为它宕机了.此时就会将该datanode的块信息,交由其它活跃的datanode来存储.3.所有的datanode会定时(6个小时),向namenode汇报一次自己完整的块信息,让namenode校验更新

          负载均衡:

          namenode会保证所有的datanode的资源使用率,尽量保持一致

          副本机制:

          可以提高容错率,默认的副本数是: 3

          如果当前副本总数 > 默认的副本数(3),namenode会自动删除某个副本如果当前副本总数 < 默认的副本数(3),namenode会自动增加该副本.如果当前活跃的机器总数 《 默认的副本数(3),例如: 默认3副本,但是现在只有2台机器活跃了就会强制进入到 安全模式(safemode),安全模式下: 只能读,不能写

          更多配置,详见Hadoop官方文档:

          https://hadoop. apache. org/docs/r3. 3. 0/hadoop-project-dist/hadoop-hdfs/hdfs-default.xm

          8. HDFS的Shell命令

          # HDFS的Shell命令, 类似于Linux的Shell命令, 格式稍有不同, 具体如下:
          hadoop fs -选项 参数		# 既能操作HDFS文件系统, 还能操作本地文件系统.
          hdfs dfs -选项 参数			# 只能操作HDFS文件系统. 
          # 细节: 操作HDFS路径的时候, 建议加上前缀  hdfs://node1:8020/
          # -ls命令, 查看指定的HDFS路径下所有的内容. 
          hadoop fs -ls /			# 查看根目录下所有内容(不包括子级)
          hadoop fs -lsr /		# 查看根目录下所有内容(包括子级), 该命令已过时, 不推荐用.
          hadoop fs -ls -R /		# 查看根目录下所有内容(包括子级), 该命令已过时, 不推荐用.
          # mkdir命令, 创建目录
          hdfs dfs -mkdir /aa				# 创建单级.
          hdfs dfs -mkdir -p /aa/bb/cc/dd	# 创建多级目录.
          # cat命令, 查看文件内容.
          hadoop fs -cat /input/word.txt
          # mv命令, 剪切. 只能是 HDFS路径 => HDFS路径
          hadoop fs -mv /input/word.txt /aa
          # cp命令, 拷贝. 只能是 HDFS路径 => HDFS路径
          hadoop fs -cp /input/word.txt /aa
          # rm命令, 删除.
          hadoop fs -rm /aa/bb/word.txt
          hadoop fs -rmr /aa		# 递归删除aa文件夹
          hadoop fs -rm -r /aa	# 递归删除aa文件夹, 效果同上.
          # put命令, 把Linux系统的文件 上传到 HDFS文件系统中. 
          hadoop fs -put 1.txt /input		# 1.txt是Linux的文件路径, /input是HDFS的目录路径
          # get命令, 把HDFS文件系统的某个文件 下载到 Linux系统的文件中.
          hadoop fs -get /input/1.txt ./	# 1.txt是HDFS的文件路径,  ./Linux的路径.

网友评论

搜索
最新文章
热门文章
热门标签