大数据、人工智能、云计算知识概括

150 阅读10分钟

@TOC

大数据简介

什么是大数据:

  • 举例: ①商品推荐: <1>问题:1、大量的订单如何存储 2、大量的订单如何计算 ②天气预报: <1>问题:1、大量的天气数据如何存储 2、大量的天气数据如何计算
  • 本质: ①数据的存储:分布式文件系统(分布式存储) ②数据的计算:分布式计算

大数据与Java的关系:

  • Hadoop框架:基于Java语言开发
  • Spark框架:基于Scala语言开发,Scala基于Java语言

学大数据需要的基础:

  • java基础(javase)---> 类,继承,I/O,反射,泛型****
  • linux基础(linux操作)-----> 创造文件,目录,vi编辑器****

大数据学习路线:

  • java基础和linux基础
  • Hadoop的学习:体系结构,原理,编程 ①第一阶段: <1>HDFS(数据存储), <2>MapRedue(数据计算), <3> HBase(NoSql数据库) ②第二阶段: <1>数据分析引擎:Hive,Pig <2>:数据采集引擎:Sqoop,Flume ③第三阶段: <1>HUE:Web管理工具(基于网页方式) <2>ZooKeeper:实现Hadoop的HA(双机集群(HA)系统简称) <3> Oozie:工作流引擎
  • Spark的学习: ①第一阶段: <1>Scala编程语言 (注意:spark也支持java,python语言开发) ②第二阶段: <1>Spark Core---->基于内存,数据的计算 ③第三阶段: <1>Spark SQL----->类似Oracle中的SQL语句 ④第四阶段: <1>Sprak Streaming ----> 进行实时计算(流式计算):比如:自来水厂
  • Apache Storm的学习:类似Sprak Streaming ----> 进行实时计算(流式计算) ①NoSQL:Redis基于内存的数据库用于计算完成后保存结果

Hadoop和Storm对比:

  • 应用场景对比 ①Storm: 分布式实时计算,强调实时性,常用于实时性要求较高的地方 ②Hadoop:分布式批处理计算,强调批处理,常用于对已经在的大量数据挖掘、分析

HBase和Redis:

  • HBase和Redis的功能上比较相似。都是nosql类型的数据库。但是在适用场景上,两者还是有比较明显的区别的。
  • 下面基于读写性能、数据类型、数据量、部署难易、数据可靠性、应用场景、两者的结合等多个维度来比较一下两者。
  • 读写性能:HBase写快读慢,HBase的读取时长通常是几毫秒,而Redis的读取时长通常是几十微秒。性能相差非常大。
  • 数据类型:HBase和Redis都支持KV类型。但是Redis支持List、Set等更丰富的类型。
  • 数据量:Redis支持的数据量通常受内存限制,而HBase没有这个限制,可以存储远超内存大小的数据。
  • 部署难易:HBase部署需要依赖hadoop、zookeeper等服务,而Redis的部署非常简单。
  • 数据可靠性:HBase采用WAL,先记录日志再写入数据,理论上不会丢失数据。而Redis采用的是异步复制数据,在failover时可能会丢失数据。
  • 应用场景:HBase适合做大数据的持久存储,而Redis比较适合做缓存。如果数据丢失是不能容忍的,那就用只能用HBase;如果需要一个高性能的环境,而且能够容忍一定的数据丢失,那完全可以考虑使用Redis。
  • 两者的结合:HBase可以用来做数据的固化,也就是数据存储,做这个他非常合适。Redis适合做cache。可以用HBase+Redis实现数据仓库加缓存数据库,速度和扩展性都兼顾。
  • 综合上述比较,我们可以看出。这两者都有各自擅长的领域,不存在相互替代。具体选用哪个服务,要根据具体业务场景、数据量选择最合适的方案。

Phoenix定义:

  • Phoenix最早是saleforce的一个开源项目,后来成为Apache基金的顶级项目。
  • Phoenix是构建在HBase上的一个SQL层,能让我们用标准的JDBCAPIs而不是HBase客户端APIs来创建表,插入数据和对HBase数据进行查询。
  • Phoenix完全使用Java编写,作为HBase内嵌的JDBC驱动。Phoenix查询引擎会将SQL查询转换为一个或多个HBase扫描,并编排执行以生成标准的JDBC结果集。直接使用HBaseAPI、协同处理器与自定义过滤器,对于简单查询来说,其性能量级是毫秒,对于百万级别的行数来说,其性能量级是秒。
  • HBase的查询工具有很多,如:Hive、Tez、Impala、Spark SQL、Phoenix等。

Hbase,Hive和Hdfs的关系以及区别:

  • Hbase:HBase是一个分布式的、面向列的开源数据库,Hbase是Hadoop database即Hadoop数据库。HBase的数据通常存储在HDFS上。HDFS为HBase提供了高可靠性的底层存储支持。不过HBase 本身其实可以完全不要考虑 HDFS 的,你完全可以只把 HBase 当作是一个分布式高并发 k-v 存储系统,只不过它底层的文件系统是通过 HDFS 来支持的罢了。换做其他的分布式文件系统也是一样的,不影响 HBase 的本质。甚至如果你不考虑文件系统的分布式或稳定性等特性的话,完全可以用简单的本地文件系统,甚至内存文件系统来代替。Hbase非常适合用来进行大数据的实时查询。Facebook用Hbase进行消息和实时的分析。它也可以用来统计Facebook的连接数。
  • Hdfs:HDFS是Hadoop分布式文件系统。一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作;集群中的DataNode管理存储的数据。
  • Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。Hive帮助熟悉SQL的人运行MapReduce任务。因为它是JDBC兼容的,同时,它也能够和现存的SQL工具整合在一起。运行Hive查询会花费很长时间,因为它会默认遍历表中所有的数据。虽然有这样的缺点,一次遍历的数据量可以通过Hive的分区机制来控制,另外Hive目前不支持更新操作。Hive适合用来对一段时间内的数据进行分析查询,Hive不应该用来进行实时的查询。因为它需要很长时间才可以返回结果。hive可以用来进行统计查询,HBase可以用来进行实时查询,数据也可以从Hive写到Hbase,设置再从Hbase写回Hive。

hdfs:分布式文件系统:

  • hdfs有着文件系统共同的特征: 1、有目录结构,顶层目录是: / 2、系统中存放的就是文件 3、系统可以提供对文件的:创建、删除、修改、查看、移动等功能
  • hdfs跟普通的单机文件系统有区别: 1、单机文件系统中存放的文件,是在一台机器的操作系统中 2、hdfs的文件系统会横跨N多的机器 3、单机文件系统中存放的文件,是在一台机器的磁盘上 4、hdfs文件系统中存放的文件,是落在n多机器的本地单机文件系统中(hdfs是一个基于linux本地文件系统之上的文件系统)
  • hdfs的工作机制: 1、客户把一个文件存入hdfs,其实hdfs会把这个文件切块后,分散存储在N台linux机器系统中(负责存储文件块的角色:data node)<准确来说:切块的行为是由客户端决定的 2、一旦文件被切块存储,那么,hdfs中就必须有一个机制,来记录用户的每一个文件的切块信息,及每一块的具体存储机器(负责记录块信息的角色是:name node) 3、为了保证数据的安全性,hdfs可以将每一个文件块在集群中存放多个副本(到底存几个副本,是由当时存入该文件的客户端指定的)
  • 综述:一个hdfs系统,由一台运行了namenode的服务器,和N台运行了datanode的服务器组成!

Flume详解:

  • Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传 输的系统。Flume基于流式架构,灵活简单。
  • 为什么选用flume 在这里插入图片描述
  • flume的主要功能:就是实时读取服务器本地磁盘的数据,将数据写入到HDFS上。
  • 详细架构图:在这里插入图片描述
  • 链接:Flume详解

hadoop项目开发案例:

  • 首先是在 政务方面的应用:政务大数据平台解决方案——推行电子政务、建设智慧城市等为抓手,以数据集中和共享为途径,推动技术融合、业务融合、数据融合,打通信息壁垒,形成覆盖全国、统筹利用、统一接入的数据共享大平台,构建全国信息资源共享体系,实现跨层级、跨地域、跨系统、跨部门、跨业务的协同管理和服务。 在这里插入图片描述
  • 企业级大数据处理平台 ——这是针对大型企业或者行业,如果是一般的小企业就没有必要了。 在这里插入图片描述
  • 城市智慧停车解决方案 ——智慧城市建设的重要组成部分,前些时候分享过一个大快的城市智慧停车云平台解决方案,感兴趣的可以看一下! 在这里插入图片描述

总结:

  • HDFD分布式存储数据系统。(数据存储)
  • Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传 输的系统。(数据采集)
  • Hbase:HBase是一个分布式的、面向列的开源数据库。(数据存储)
  • Hive:Hive是基于Hadoop的一个数据仓库工具。(数据分析)

ES-Hadoop插件介绍:

  • ES-Hadoop无缝打通了ES和Hadoop两个非常优秀的框架,我们既可以把HDFS的数据导入到ES里面做分析,也可以将es数据导出到HDFS上做备份,归档,其中值得一提的是ES-Hadoop全面的支持了Spark框架,其中包括Spark,SparkStreaming,SparkSQL,此外也支持Hive,Pig,Storm,Cascading,当然还有标准的MapReduce,无论用那一个框架集成ES,都是非常简洁的。

云计算

云计算是什么:

  • 本质:对资源的管理
  • 管理硬盘空间,cpu算力,网络带宽
  • 简单来说就是:将布置在云(远程机房)上计算机的资源给你用。
  • 两个灵活性:时间上随时出现,空间上任意叠加。

人工智能

人工智能是什么:

  • 有了大数据后然后在云计算中总结规律产生知识,但这些知识是基于规律的而非人性。
  • 而人工智能就是将这些知识教给机器。
  • 过去我们将人的推理过程总结成规律,告诉机器,再让机器根据你的提问,推理出相应的回答----这样行不通。
  • 因为机器和人完全不一样,人是通过神经元组成的神经网络思考的。
  • 人工智能的神经网络:用一个数学单元模拟神经元,这个神经元有输入,也有输出,输入和输出之间通过一个公式来表示,输入根据重要程度不同(权重)影响着输出 ,将n个神经元通过一张神经网络一样连接在一起形成神经网络。