Hadoop实战-part2 Hadoop 2.0

简介: Hadoop实战-part2 Hadoop 2.0

一、HA

1.HA可以避免NN之间切换带来的数据丢失
2.协同概念:举例---由一个节点(journalnode)监听几个节点的文件创建情况,当一个节点创建了一个文件,则上传至监听服务器,监听服务器通知其他机器,更新同步创建该文件入口
3.HA中的JN(至少3台),监听active NN的edits,不监听fsimage。jn可以单独部署3台服务器或者放在DN上,不能放在master上。Active NN和Standby NN通过JN共享状态,JN用于二者同步数据。
  1)DN上传给NN的心跳信息:DN和Block id的对应关系;是否活着;磁盘使用状况;已用和可用的资源信息;
  2)为什么底下的DN会同时向active NN和standby NN发送心跳信息呢?是为了在启动时上报完全一样的fsimage信息,即为了保证二者(active nn和staudby nn)的fsimage以及其他信息一致,避免出现数据丢失;
  注:NN部署多少台:取决于机房归谁管,自己管,可以只部署2台;如果是别人管,只要保证有1台或者即可;


  active nn 和standby nn 如何切换?取决与ZK,分布式锁是ZK的其中一个作用。
  当集群建好后,还不能直接使用start-all.sh来启动。
4.ZK:分布式锁,一定是奇数台(内部投票机制)
  1)第一次启动集群时,所有的NN都是standby,需要手动切换其中一台为active,ZK会将分布式锁交给这个NN,如果该NN挂了,则ZK通知其他NN竞争该锁(拿到ZK给的写权限),得到该所的NN自动切换会active
  2)脑裂:2.5版本前可能出现脑裂问题,2.5后官方已解决。(如果之后的版本依旧有问题,可能是环境配置出错)
     ZK监听不到active NN的心跳信息,就把standby NN设置为active,假设出现原active NN活了,此时就存在两个active,这个问题就是脑裂(因为此时JN不知道监听谁,便放弃监听,不知道哪个是active nn;同时也导致查不到信息)
  3)不是所有的ZK都是低配,当使用kafka时,可能需要用到高配。
  注:当ZK出现故障,同时NN也挂掉,则可能无法工作(投票机制可能导致无法选出新active NN)
5.Federation(联邦方式):搭建后,会有多个active NN对外提供服务,可分管不同的目录文件
  应用场景:单个NN无法抗住并发访问需求;机房在不同的地方,需要进行合并;
6.服务器高低配情况处理:高配做计算,低配做存储;

二、MapReduce

1.设计理念:分布式计算;移动计算,而不是移动数据(将代码复制成多份,在各个block所在地上执行);
2.MR运行流程
  1)Input(<text> input format)
  2)splitting(按块切分)
  3)RecordReader(块转化为键值对,key是偏移量,value是偏移量下的一整行数据)
  4)Mapping
     A.当Map输出小于100M,直接放内存;大于走partition sort and spill to disk,默认partition是按hash来partition的;
     B.Map算出来先放在本地,中间结果如果放HDFS是不删的;
     C.具有本地优势,数据在哪里,就在哪里执行;
  5)shuffling
  6)Reducing
     A.程序入口需要键值对
     B.选择资源较宽裕的机器执行
  7)Final result
3.MR开发
  1)所有在大数据领域,只要数据来源于HDFS,默认情况,直接写/就是hdfs路径,如果是本地则要以file:///开头,第三个斜杠才是本地路径的根路径;
  2)开发中结果目录,默认是不存在的,如果存在会报错;
  3)开发时setNumReduceTasks可以设置为0,结果没有reduce
     HIVE执行时,没有聚合操作时,只有MAP,没有reduce
4.问题点
  1)写入文件时,如果HDFS的副本数是8个,写入后只有3个副本,3周后(时间可改)会再补足那8个;如果是从8个降为3个,HDFS不会自动删除,需要运维人员手工删除;写入文件时,如果HDFS的副本数是8个,写入后只有3个副本,3周后(时间可改)会再补足那8个;如果是从8个降为3个,HDFS不会自动删除,需要运维人员手工删除;
  2)数据倾斜:服务器与服务器之间的存储相差比不超过20%(可自主设定,但建议20%)
     危害-磁盘容易损坏;负载不均衡;如果存储数据多的磁盘损坏,损失较严重;
     发生原因-Map时,会做partition,partition可能导致大量的数据在一个reduce,导致这些数据最后放在一个节点,则可能导致倾斜(如果这种情况发生比较频繁,需要根据数据重写partition策略)
     处理办法-执行命令sbin/start-balancer.sh(在不影响对外服务服务的情况下做数据迁移,带宽限制在内网的100K/S;会随机选几台服务器进行比对,20%以内就不做balance;),
     重写SORT策略场景-当需要按自然数排序时(默认是按字典顺序排序,1,11,12,2,21,22,3...)
     问题:服务器中只有两台发生倾斜,需要在短时间内解决数据倾斜问题
          解决办法:方法一:1)将其他节点从集群中踢掉;2)更改带宽;
                    方法二:人工迁,但步骤不能错,错了数据可能就找不回来了
  3)默认Map启动20%时,Reduce启动;Map启动80%时,Reduce开始做事(Reduce在20%-80%之间不做事);
     mapred-site.xml中有个参数,有一个key值,为1表示MAP运行到100%时再启动reduce,建议设置为1
     问题:1T数据,启动10个Map后,必须进入Reduce
     解决办法:方法一-改Block大小(1T/10),比较麻烦
               方法二-splitting中会根据partition来拆分,默认一个partition是一个block,可以改变partition的大小
  4)磁盘陈列:DN上建议不做,做了读写速度很低。(NN可以做)
  5)磁盘损坏:硬件支持热插拔、损坏的不是操作系统————磁盘可以直接拔掉,插则需要设置(挂盘,然后把HDFS相关文件目录做到这块磁盘)
  6)任务提交执行需具备的条件:CPU、内存(最重要,最小资源数,有算法公式-某任务需要多少资源)、数据。当数据所在节点都没有CPU,内存资源时,会将这些数据拷贝到别的有资源的节点运行,此事发生数据拷贝。
  7)虚拟化(大数据领域):一般指CPU和内存虚拟化,只有CPU能造假。
     内存造假(不可行):硬件上限制,内存可虚拟为2.5倍,但是根据DN启动的一些限制(DAY1),一般会禁用交换空间。则内存如果虚拟,则大量任务会挂掉。
     CPU造假:时钟频率一到,要做切换。一个物理核对应过来,可虚拟为2个,根据CPU能力,可虚拟为4个。
  8)MR输出压缩要注意的事项:本身是否支持切割(如果能切割,直接存在某节点,1个BLOCK;可切割,存放方式与HDFS文件类同);压缩比如何;

三、YARN

1.作业执行(YARN)
  1)Hadoop 1.0:JobTracker & TaskTracker
     一代一个TaskTracker,只能运行2个MAP,2个Reduce
     缺陷:JobTracker负载较高
  2)Hadoop 2.0改进:Resource Manager & Node Manager
  注意:DistributedCache的操作一定要放在job的初始化之前,否则会报出文件找不到的异常
2.Job调度管理:调度器算法;管理多少资源;调度器谁可用;任务等级;
  1)算法:FIFO先进先出调度器;Fair公平调度器;Capacity容量调度器;
  补充:搜索引擎算法(索引比原文大很多,Solr&ES)

四、架构:

1.数据传输:爬虫/Flume/Kafka==>Storm
                               Sparking streaming==>SQL/AI==>Web==>存储
                               flink(蘑菇街在用,雷声大雨点小,性能不敢恭维)
2.存储:HDFS,本地(次之),关系DB(最差,优点在于    OLTP),Hive,HBase,Kudu,ES/Solr,Redis,MPP DB,Kafka,Cassandra,Impala,Presto(FB开发的,国内京东在使用)...
  注:ES,Solr,MMP要部署在不同的集群,这三类都需要资源,资源抢占会造成一个DN挂掉,所有Server都会挂掉。    
      HBase和Spark也建议不要搭在一块,资源抢占严重
      如果框架需要内存,则不要部署在同一个集群内。

书籍推荐
1.Hadoop权威指南:大数据的存储与分析(第四版)-----只能了解各大概,入门级教材
2.Hadoop技术内幕——深入解析YARN架构设计与实现原理(董西成),可以去官网找英文论文(只是翻译过来了)
3.Hadoop技术内幕——深入解析MR架构设计与实现原理(董西成)——用到时再买
4.Hive编程指南——看完再看官网的
5.HBase权威指南——替换kudu,kudu上官网看
6.深入理解Java虚拟机:JVM高级特性与最佳实践(周志明)——能找到1.8最好
7.深入理解JVM&G1 GC——建议只看G1,不用买,只有几十页值得看
8.图解Spark:核心技术与案例实践
9.Scala编程(第3版,下面是风景的)——七百多页,看书方法:如果要长时间能记录80%内容,要求一周内看完。
10.深入理解Scala——高阶的,有兴趣了再看
11.机器学击败AlphaGo的武林秘籍——理论,除了神经网络
12.深度学习 人工智能算法——理论,神经网络
13.机器学习实战(哈林顿,基于Python)——实践

看视频的方法:看完视频,回顾一遍,记得住的就学到了,记不住的再看一遍。(或者讲给别人听)

相关文章
|
SQL 分布式计算 Hadoop
大数据行业部署实战1:Hadoop伪分布式部署
大数据行业部署实战1:Hadoop伪分布式部署
498 0
|
7月前
|
分布式计算 Java 大数据
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
747 0
|
7月前
|
分布式计算 大数据 Scala
【大数据技术Hadoop+Spark】Spark RDD创建、操作及词频统计、倒排索引实战(超详细 附源码)
【大数据技术Hadoop+Spark】Spark RDD创建、操作及词频统计、倒排索引实战(超详细 附源码)
355 1
|
6月前
|
存储 分布式计算 Hadoop
Hadoop Distributed File System (HDFS): 概念、功能点及实战
【6月更文挑战第12天】Hadoop Distributed File System (HDFS) 是 Hadoop 生态系统中的核心组件之一。它设计用于在大规模集群环境中存储和管理海量数据,提供高吞吐量的数据访问和容错能力。
702 4
|
2月前
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(二)
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(二)
49 3
|
2月前
|
分布式计算 Java Hadoop
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(一)
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(一)
49 2
|
3月前
|
分布式计算 Hadoop Devops
Hadoop集群配置https实战案例
本文提供了一个实战案例,详细介绍了如何在Hadoop集群中配置HTTPS,包括生成私钥和证书文件、配置keystore和truststore、修改hdfs-site.xml和ssl-client.xml文件,以及重启Hadoop集群的步骤,并提供了一些常见问题的故障排除方法。
94 3
|
3月前
|
分布式计算 监控 Hadoop
监控Hadoop集群实战篇
介绍了监控Hadoop集群的方法,包括监控Linux服务器、Hadoop指标、使用Ganglia监控Hadoop集群、Hadoop日志记录、通过Hadoop的Web UI进行监控以及其他Hadoop组件的监控,并提供了相关监控工具和资源的推荐阅读链接。
104 2
|
4月前
|
资源调度 分布式计算 监控
【揭秘Hadoop YARN背后的奥秘!】从零开始,带你深入了解YARN资源管理框架的核心架构与实战应用!
【8月更文挑战第24天】Hadoop YARN(Yet Another Resource Negotiator)是Hadoop生态系统中的资源管理器,为Hadoop集群上的应用提供统一的资源管理和调度框架。YARN通过ResourceManager、NodeManager和ApplicationMaster三大核心组件实现高效集群资源利用及多框架支持。本文剖析YARN架构及组件工作原理,并通过示例代码展示如何运行简单的MapReduce任务,帮助读者深入了解YARN机制及其在大数据处理中的应用价值。
111 0
|
7月前
|
分布式计算 数据可视化 Hadoop
大数据实战——基于Hadoop的Mapreduce编程实践案例的设计与实现
大数据实战——基于Hadoop的Mapreduce编程实践案例的设计与实现

相关实验场景

更多