hadoop.apache.org
spark.apache.org
flink.apache.org
hadoop :HDFS/YARN/MAPREDUCE

HDFS读写流程

NameNode
DataNode
SecondaryNameNode

写流程

1. 客户端请求NameNode (几副本,block大小和个数)

2 NameNode返回可以存的datanode,存储元数据信息

3. 数据按最近原则存储,DN->DN-->DN

读流程 

client 请求NameNode, 将元数据信息返回给客户端,客户端到最近的DataNode数据地址获取数据。 

NameNode HA高可用

1.  两个NameNode ,一个active状态,一个standby 状态

2. 同一时间节点只有active提供服务

3. standy 负责同步备份active的状态。

4. 有监控器监控active,active 挂了后,standy 变成active状态。

5. 过程中用到zk

小文件

引起小文件的原因:

1. spark 任务产生大量小文件

2. reduce, task是数据设置分区太多等

3.源数据本身就有大量小文件,上传到hdfs

小文件给hadoop带来的瓶颈
1. 磁盘io问题
2. 性能问题:任务开启和销毁开销大
3. 导致NameNode大量元数据信息,消耗大量的内存

如何解决小文件问题

SQL on hadoop 业界常用框架
hive : sql => 对应的执行引擎的作业:MapRedduce/Spark/Tez
imala: 很吃内存
Presto:JD 用的多
Drill:
Phoenix:HBase(基于rowkey 查询),可以提供2级索引
Spark SQL:Spark 社区

MetaStore:存储元数据信息

sql on hadoop 调优策略

调优:在资源不变的前提下,让作业的执行性能有提升,调两大类:CPU负载,IO负载
1.架构层面调优

分表
分区表 partition
充分利用中间结果集
压缩:
使用压缩算法“减少数据的过程”, 减少磁盘IO ,网路IO
gzip
压缩在大数据中使用场景:
1.输入数据
2.中间数据
3.输出数据

前提:
1. 行式存储
2.每分钟2亿条数据
业务架构:
Flume => HDFS=> Spark ETL => Spark SQL => SQL => Spark SQL/NoSQL

分区表,多分区(d/h) 分区表,多分区(d/h)

大宽表 统计分析结果表供可视化结果展示
用户日志:
分区表:单级分区,多级分区,静态分区,动态分区

2. 语法层面调优
排序 order by/sort by/distribute by/cluster by
控制输出的数量(reduce/partition/task)
join:普通join/mapjoin
执行计划

3. 执行层面调优
推测执行
并行执行
JVM重用

储存方式
行式存储

列式存储:

1.相较于行式存储,列式存储的查询速度非常快。

2.数据易维护,当我们更新数据时,历史数据会有版本号,不会被改变或者消失。

3.非常适合大数据分析和高并发。

但是,缺点也很明显。列式存储在表关联上确实让人“头痛”不已。

总结下来,我突然觉得列式存储适合做数据分析,在业务繁杂的生产系统方面可能有所欠缺。

hadoop面试的更多相关文章

  1. hadoop面试100道收集(带答案)

    1.列出安装Hadoop流程步骤 a) 创建hadoop账号 b) 更改ip c) 安装Java 更改/etc/profile 配置环境变量 d) 修改host文件域名 e) 安装ssh 配置无密码登 ...

  2. hadoop面试时可能遇到的问题

    面试hadoop可能被问到的问题,你能回答出几个 ? 1.hadoop运行的原理? 2.mapreduce的原理? 3.HDFS存储的机制? 4.举一个简单的例子说明mapreduce是怎么来运行的 ...

  3. 网上找的hadoop面试题目及答案

    1.Hadoop集群可以运行的3个模式? 单机(本地)模式 伪分布式模式全分布式模式2. 单机(本地)模式中的注意点? 在单机模式(standalone)中不会存在守护进程,所有东西都运行在一个JVM ...

  4. hadoop面试时的一些问题解答

    一.         linux部分 请阐述swap分区作用,您认为hadoop集群中的linux是否必须有swap分区? 答:在Linux中,如果一个进程的内存空间不足,那么,它会将内存中的部分数据 ...

  5. Hadoop面试题目

    1.Hadoop集群可以运行的3个模式? 单机(本地)模式 伪分布式模式 全分布式模式 2.  单机(本地)模式中的注意点? 在单机模式(standalone)中不会存在守护进程,所有东西都运行在一个 ...

  6. Hadoop面试链接

    http://blog.csdn.net/haohaixingyun/article/details/52819457 http://blog.csdn.net/kingmax54212008/art ...

  7. Hadoop 面试总结

    1.简要描述如何安装配置一个开源的hadoop,只描述即可,列出完整步骤. a.创建一个用户和用户组,用来管理hadoop项目 b.修改确定ip地址:vim /etc/sysconfig/networ ...

  8. hadoop面试复习笔记(1)

    0.Mappereduce采用的是Master/Slaves模型 1.Hadoop是一个开源软件框架,支持支持大数据集的存储和处理.Apache Hadoop是存储和处理大数据的解决方案你是因为: ( ...

  9. 【转载】Hadoop面试(1)

    转自:http://www.cnblogs.com/xiaolong1032/p/4504992.html 列举出hadoop常用的一些InputFormat InputFormat是用来对我们的输入 ...

随机推荐

  1. 全网连夜修复的Log4j漏洞,如何做到一行代码都不改?

    GitHub 21.5k Star 的Java工程师成神之路,不来了解一下吗! GitHub 21.5k Star 的Java工程师成神之路,真的不来了解一下吗! Apache Log4j2 远程代码 ...

  2. JSP、JSTL标签、EL表达式

    JSP.JSTL标签.EL表达式 1.EL表达式:${} 功能: 获取数据 执行运算 获取web开发的常用对象 2.JSP标签 例如: jsp标签还有很多功能,这里只列举出一种. <jsp:fo ...

  3. 编写Java程序_输入一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

    要求: 输入一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. 实现代码: package kaoshi; import java.util.Scanner; pu ...

  4. Eclipse 常用快捷键大全

    15 个 Eclipse 常用开发快捷键使用技巧 1.alt+? 或 alt+/:自动补全代码或者提示代码 2.ctrl+o:快速outline视图 3.ctrl+shift+r:打开资源列表 4.c ...

  5. Linux查找class类所在jar包

    1.说明 写代码或者定位问题的时候, 经常发生只知道类名不知道其所在jar包的问题, 在Eclipse中可以使用Ctrl+Shift+T查找类, 但是如果类所在的jar包不在Build Path中, ...

  6. MYSQL架构理解

    目录 一.MYSQL架构 1. 架构图 2.分层实现 3.查询组件 二.并发控制 三. 事务 四.引擎 摘自 通过对MYSQL重要的几个属性的理解,建立一个基本的MYSQL的知识框架 一.MYSQL架 ...

  7. Python_issubclass&isinstance方法和types&inspect内置模块

    issubclass&isinstance issubclass 用于判断一个类是否是一个已知类或是该已知类的子类.注意,该方法只能判断类不能判断实例化对象. class A: pass cl ...

  8. docker的无用镜像

    dangling images build 自己的 docker 镜像的时候,有时会遇到用一个甚至多个中间层镜像,这会一定程度上减少最终打包出来 docker 镜像的大小,但是会产生一些tag 为 n ...

  9. 细谈 == 和 equals 的具体区别 【包括equals源码分析】

    1.前言 昨天舍友去面试,被面试官的问题难住了:俩个学生类除了学生姓名不同用.equal来比较. 我是一脸懵逼的 ,问题说的很模糊 , 理解字面意思为 :一个 实体类名叫Student ,内部属性有学 ...

  10. ubuntu的一些常用操作

    查看当前正在运行的操作系统版本 $ cat /etc/issue 查看操作系统详细信息 $ sudo lsb_release -a 查看内核版本号 $ uname -r 卸载软件(不保留配置文件) $ ...