zoukankan      html  css  js  c++  java
  • hadoop第二课

    1.1为什么需要Hadoop 

    (1)数据分析者面临的问题 

      – 数据日趋庞大,读写都出现性能瓶颈;

      – 用户的应用和分析结果,对实时性和响应时间 要求越来越高;

      – 使用的模型越来越复杂,计算量指数级上升。 

    (2)期待的解决方案 

      – 解决性能瓶颈,在可见的未来不会出现新瓶颈 之前的技术可以平稳过渡,如SQL;

      – 转移成本,如软硬件成本,开发成本,技能培 养成本,维护成本 

    (3)关系型数据库和Hadoop的比较 

    课堂笔记

    关系型数据库属于集中型的数据方案。

    数据大小:

    1PB=210GB

    访问:

    交互式处理—处理在线数据,实时处理,通俗一点就是一问一答的意思。

    批处理—处理离线数据,举个例子,学生问老师10个问题,老师将这10个问题解决后,一次性将解答打包给学生。

    更新:

    一次写入多次读写—eg:百度搜索。(倒排索引)

    ps:增删改查,Hadoop中没有改,当写错时,就只有直接覆盖。

    另外,关系型数据库的数据结构是表,,在建好的表上增加或删除属性,成本是很大的。

    结构:

    怎么说呢?在传统关系型数据库Mysql中,比如学生管理系统,其中关于学生的一个表,有很多属性,Sno Sname Sage Ssex Sdept,其中,某些属性对应的属性值是null,存储时是会占空间的,而Hadoop的话,null值是不会占空间的。数据一大,那优势就体现出来了。

    完整性:

    范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,满足不同程度要求的为不同范式。

    换句话说,就是规则(约束),进而有了完整性一说。

    因而在关系型数据库中,因为有外键的存在,在删除某个表时,要删除从表信息,才能删除主表的信息。

    Hadoop就不同,它是一张大表,就没有关系型数据库的那些麻烦。

    那么,问题来了,既然如此,那么我们的生活中就不需要关系型数据库了吗?

    举个例子,教务系统,当中有学生的信息,老师的管理,课程的安排等等,不可能只用一张表能装下如此错综复杂的信息。因而我们生活中还是要用关系型数据库!

    横向扩展:

    嗯...没有图,将就了吧。想象一下,这里有个二维函数,横坐标是服务器的台数,纵坐标是性能,Hadoop和RDBMS(关系型数据库)在第一区间的函数分别是怎样的呢?前者是一个一次函数,一直上升;后者的函数先极速上升,后趋向平缓,进而无论后面增加多少台服务器,性能都趋于定值。

    ——————————————————————————————————————————————————

    Hadoop思想-小鱼与鲨鱼,高富帅与屌丝 

    (4)集群

    • 集群的定义

      – 集群是一组相互独立的、通过高速网络互联的 计算机,它们构成了一个组,并以单一系统的 模式加以管理。

      – 一个客户与集群相互作用时,集群像是一个独 立的服务器。

    • 集群的作用

      – 在付出较低成本的情况下获得在性能、可靠性、 灵活性方面的相对较高的收益  

    • 使用集群的目的

      – 提高性能(横向扩展)

      – 降低成本(买一台百万级的服务器,用分布式10万块就可以办到)

      – 提高可扩展性(加一台机器,性能呈   上升)          

      – 增强可靠性(比如说一台机子宕机了)

    • 使用集群的场景

      – 科学集群

      – 负载均衡集群

      – 高可用性集群

    • 集群的构建

      – 从硬件角度来看可以分为节点机系统、通讯系 统、存储系统等 

      – 软件角度则主要有操作系统、集群操作系统 (COS)、并行环境、编译环境和用户应用软件等

    • 集群的关键技术

       – 任务调度——进程迁移

    (5)Hadoop体系下的分析手段

      – 主流:Java 程序

      – 海量离线数据处理技术:MapReduce

      – 分布式文件系统:HDFS

      – NoSQL(Not Only不止一个数据库的意思)数据库:Hbase

      – SQL技巧平稳:Hive

    1.2Hadoop2.0生态系统 

     (1)Hadoop自身包括以下内容:

      Hadoop Common: hadoop的基础

      Hadoop Distributed File System (HDFS): 分布式文件系统

      Hadoop YARN: 集群任务资源管理及任务 调度的框架

      Hadoop MapReduce: 基于YARN的分布式计算 

    (2)与hadoop相关的产品大致上分为两大部分:

    • 数据服务(Data Services)

      – HBase: 将文件建于HDFS上的分布式KeyValue数据库 要先搭建Hadoop平台!

      – Hive: 有比较友好接口(相对来讲)的数据仓 库,它实际上是基于MapReduce的一个应用。搭建Hive之前不必要搭建Hbase,但要搭建Hadoop。

      – Pig:它使用一个叫做“Pig Latin”的东西来作为 用户交互语言,底层依然是MapReduce。它与 Hive有类似之处,都是用来做大数据处理,但 它似乎比Hive要简单一些,没有“存储”的概念 (metadata,“表”等), 接口也少。

      – HCatalog:这是一个hadoop数据管理层,你 可以用Hive, Pig , MapReduce等来存取 hadoop的数据,而不用关心这些数据是如何存 储的。

    • 运行维护(Operational Services)

      – ZooKeeper:分布式应用协调器。只能搭建奇数个集群。

    • 其他相关产品/项目:

      – Mahout: 机器学习和数据挖掘

      – Spark:内存计算

      – Storm:实时计算 

    ps:现在其余两个已经被Spark取代。

    (3)Hadoop2.0中各种产品的相互关系 

     ps:灰色的Hadoop自带,绿色的是与Hadoop相关的产品。

    Amban:运维工具

    Avro:某种协议

    Cassandra:最最专业的NoSQL工具

    Oozie:向Hadoop提交数据

    三大主流的数据库:Cassandra;芒果;Hbase。

    爱笑的男孩运气都不会差
  • 相关阅读:
    docker,构建nginx反向代理tomcat
    centos7 Docker Compose 的安装
    tomcat8以上管理页面提示403问题
    实战docker,编写Dockerfile定制tomcat8镜像,实现web应用在线部署
    pycharm的MySQLdb模块导不进去时解决办法
    使用Docker创建Elasticsearch服务
    使用Docker搭建Tomcat运行环境
    win7查看某个端口被占用的解决方法
    在docker中使用mysql数据库,在局域网访问
    c++11 其他特性(一)
  • 原文地址:https://www.cnblogs.com/DC0307/p/8569911.html
Copyright © 2011-2022 走看看