大数据与Hadoop简单入门[学习笔记]

关于本笔记:

 


 

什么是大数据

  • 大量(Volume)    存储大,计算量大
  • 多样(Variety)    来源多,格式多
  • 快速(Velocity)    增长速度快,处理速度要求快
  • 价值(Value)    浪里淘沙却又弥足珍贵

哪里有大数据

  • 互联网企业:搜索引擎,SNS,微博,视频网站,电商网站
  • 物联网,移动设备,终端传感器采集的各种信息,比如小米手环采集的运动信息,手机采集的位置信息
  • 电信及互联网运营商
  • 科研领域:天文望远镜拍摄的图像,视频数据,气象学中的卫星云图数据,基因生物学等

 

市场需求及发展前景

  • 仅需熟悉hadoop的程度即可年薪20万左右

大数据技术面对的问题

  • 海量数据如何存储
  • 海量数据如何处理
  • 海量数据如何BI分析
  •  ……

问题1:怎样解决海量数据的存储

  • 传统方式:
    * 使用NFS网络文件系统,文件分类存储。
    * 但是当用户集中取用特定文件时会负载过大

问题2:怎样解决海量数据的计算

  • * 一行一行读取?    * 磁盘IO瓶颈导致效率太低速度太慢
    * 一次性加载到内存?    * 内存容量有限
    * 中间结果全部缓存到hashmap中?    * 内存容量有限
    * 多线程处理?    * 无法改变资源瓶颈的现实
  • 解决思路一:
    * 纵向扩展,提高单机性能
    * (增加内存,增强CPU,高性能磁盘)
    * 优点:简单易行
    * 缺点:成本过高
  • 解决思路二:
    * 横向扩展,用多节点分布式集群处理
    * (通过增加处理节点数量来提高处理能力)
    * 核心思想:任务分摊,通过协作来实现单节点无法实现的任务
    * 优点:
    * 1.成本相对低
    * 2.易于线性扩展(增加节点提高处理能力)
    * 缺点:系统复杂度增加* 分布式计算的复杂性在哪里?
    * 1.如何调度资源
    * 2.任务如何监控
    * 3.中间结果如何调度
    * 4.系统如何容错
    * 5.如何实现众多节点间的协调
    * ……

 


 

大数据行业标准–Hadoop

hadoop logo

  • Hadoop是开源的可运行于大规模集群上的分布式文件系统和运算处理的基础框架
  • 擅长于在廉价机器搭建的集群上进行海量数据(结构化与非结构化)的存储离线处理

Hadoop的由来

  • Apache的人参照Google著名论文实作而来
    * GFS->HDFS
    * MapReduce->Hadoop
    * BigTable->HBase

Hadoop的生态体系

  • HDFS(Hadoop分布式文件系统)
  • Mapreduce(分布式计算框架)
  • Hive(基于Hadoop的数据仓库)
  • HBase(分布式数据库)
  • Zookeeper(分布式协作服务)
  • Sqoop(数据转换工具)
  • Pig(基于Hadoop的数据流系统)
  • Mahout(机器学习-数据挖掘算法库)
  • Flume(日志收集工具)

Hadoop的核心组件

核心组件1:海量存储–HDFS

  • HDFS,即Hadoop Distributed File System Hadoop分布式文件系统
  • 特点:
    * 分布式易扩展
    * 廉价易得
    * 高吞吐量
    * 高可靠性–副本机制(备份容灾)
  • 总结:
    * 1.通过分布式集群来存取文件
    * 2.会给客户端提供统一的目录结构和访问接口(命令行,Java API)
    * 3.存储文件的时候,是将文件切成若干个文件块BLOCK存放到不同的主机(DATANODE)上,每个BLOCK都有多个副本(由每个BLOCK创建时所在的DATANODE负责统筹在其他DATANODE上建立副本)
    * 4.集群中的节点会分为2类角色:
    * NAMENODE—元数据节点(记录一个文件的各个BLOCK的实际存储地址(位于哪台主机的什么位置))
    * DATANODE—数据节点(存放BLOCK)

核心组件2:分布式并行计算

  • 组成:资源调度Yarn + 编程模型MapReduce
  • 特点:
    * 大容量高并发
    * 封装分布式实现细节
    * 大大提高分析效率

Hadoop的学习路线

  • Linux基础(系统管理,文件操作,用户管理,进程管理,磁盘管理等)
  • Java
  • Hadoop核心组件
  • MapReduce或SPARK,STORM等编程模型(学完这部分即可上手做Hadoop开发)
  • Zookeeper-Sqoop-Flume等工具组件
  • NoSQL技术,HBase分布式数据库
  • 数据分析挖掘,机器学习Mahout

Hadoop学习时长

  • 要达到上手开发的程度:2周就可以
  • 要掌握Hadoop技术:三四个月

Hadoop 学习书籍:

  • Hadoop权威指南
  • Hadoop实战
  • Hadoop技术内幕

Q & A

  • Windows下可以安装Hadoop吗?
    *不可以,应该在Linux下安装
  • C#可以做Hadoop开发啊吗?
    * 可以,但是最好用Java做Hadoop开发

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>