hadoop的起源与背景知识
一、什么是大数据
举例:
1.电商的推荐系统(可能会用到推荐算法:协同过滤,ALS,逻辑回归…)
2.天气预报
核心的问题:数据的存储,数据的计算(不是算法)
数据的存储:采用分布式的文件系统HDFS(hadoop Distributed file system)
数据的计算:采用分布式的计算MapReduce,Spark(RDD:弹性分布式数据集)
二、数据仓库和大数据
传统方式:搭建数据仓库(Data Werehouse)来解决大数据的问题
1.数据仓库就是一个数据库(Orcale,MySQL,MS)
2.数据仓库和大数据一般只做查询(分析)
3.搭建数据仓库的过程(1)数据源RDBMS:关系型数据库(结构化数据)/文本数据/其他数据
(2)利用ETL抽取/转化/加载数据后搭建数据仓库(保存为原始数据)
(3)分析处理数据(SQL,PL/SQL,JDBC)
(4)经过分析后搭建数据集市(hr,sales)
(5)提供给hr系统或销售系统
Hadoop和Spark都可以看成是数据仓库的一种实现
1.从ETL到搭建数据集都可以用Hadoop和Spark所提供的方式解决,也可以用传统方式解决
2.hadoop中使用sqoop和Flume组件完成ETL
3.hadoop中使用HDFS存储数据(或存入基于HDFS之上的HBase或Hive数据仓库)
4.hadoop中使用MapReduce(java程序)或Spark(Scala程序,只有数据计算,没有数据存储)或SQL处理数据
5.处理数据后使用HDFS或NoSQL:Redis存储到数据集市
*.大数据的终极目标是使用SQL处理数据
三、OLTP和OLAP
LTP:Online Transaction processing 联机事务处理,指:insert、update、delete —> 事务
OLAP:Online Analytic Processing 联机分析处理,一般只做查询 —> 数据仓库就是一种OLAP的应用系统
Hadoop、Spark看成是一种数据仓库的解决方案
数据仓库(查询)不支持事务
四、Google的基本思想:三篇论文
(一)GFS(Google File System) —- HDFS(Hadoop Distributed File System):分布式文件系统
(*) HDFS = NameNode + SecondaryNameNode + DataNode
1.分布式文件系统
2.大数据的存储问题
3.HDFS中,记录数据的位置信息(元信息) —- 采用倒排索引(Reverted Index)(1)什么是索引?Index
* CREATE INDEX创建索引
* 索引就是一个记录(Oracle中索引表保存的是有规律的行地址)
* 通过索引可以找到对应的数据
(2)什么是倒排索引?
* 最简单的倒排索引:单词表(wordID,word,index)
(3)NameNode(主节点,名称节点)是整个HDFS的管理员,和SecondaryNameNode(第二名称节点)同处一台主机,负责管理DateNode(从节点,数据节点),并不负责存储,与DateNode(从节点,数据节点)构成HDFS环境
(二)MapReduce:分布计算模型,问题来源PageRank(网页排名)
1.PageRank(网页排名)
2.MapReduce的标程模型:*. 核心:先拆分(拆分计算,Map阶段),再合并(Reduce阶段)
*. MR任务:job=map+reduce
*. Map的输出同时也是Reduce的输入
*. 一个MR任务一共存在四对输入和输出(),Map的输入和输出,Reduce的输入和输出
*. k2=k3,v2和v3数据类型一致,v3是一个集合,该集合中的每个值就是v2
*. 所有的数据类型必须是Hadoop自己的数据类型(为了实现Hadoop的序列化机制)
*. MR任务处理的是HDFS上的数据
*. Hadoop2.X开始,通过Yarn容器编程部署MR任务(ResourceManager<主节点> + NodeManager<从节点>)
1
2
3 Example:/root/training/Hadoop-2.7.3/Share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar
Yarn的web console:http://192.168.226.11:8088
命令://hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /input/data.txt /out/wcl
(三)BigTable:大表 —- NoSQL数据库:HBase
1.关系型数据库:以二维表的形式保存数据
2.大表的基本思想:所有的数据存入一张表(通过牺牲空间,换取时间)
3.常见的NoSQL数据库(一般为行式数据库,适合)* Redis:内存数据库(一般为行式数据库,适合DML操作,insert,update,delect)
* MongoDB:面向文档(BSON文档:是JSON的二进制)
* HBase:面向列(列式数据库,查询,select,在HBase中,rowKey不能为null,但是可以重复,相同的ey是一条记录)
1 HBase = ZooKeeper + HMaster(主节点) + RegionServer(从节点)
hadoop的环境
一、Hadoop的目录结构
hadoop-2.7.3/ —> Hadoop的HOME目录
bin/ —> Hadoop的操作命令
etc/hadoop/ —> 所有的配置文件
sbin/ —> Hadoop集群的命令:启动,停止等
share/ —> 所有共享文件
share/hadoop –> 所有依赖jar包
二、Hadoop的三种安装模式
(一)本地模式
* 没有HDFS,只能测试MapReduce程序(不是运行在Yarn中,作为一个独立的Java程序来运行)
* 配置文件:etc/Hadoop/hadoop-env.sh export JAVA_HOME={JAVA_HOME} 自己的JAVA_HOME路径
* 本地模式中用到的路径都是本地路径,因为没有HDFS
(二)伪分布模式
* 特点:再单击上模拟一个分布式的环境,具备Hadoop的所有功能
* 具备HDFS:NameNode + DataNode + SecondaryNameNode(端口50070)
* 具备Yarn:ResourceManager + NodeManager(端口8088)
* 对HDFS的NameNode进行格式化(/root/training/hadoop-2.7.3/tmp)
* 启动HDFS:start-dfs.sh
* 启动Yarn:start-yarn.sh
* 统一启动:start-all.sh
* 配置文件:etc/Hadoop/hadoop-env.sh export JAVA_HOME={JAVA_HOME} 自己的JAVA_HOME路径
* 配置文件:
1 | //hdfs-site.xml: |
(三)全分布模式
1 | (1)hdfs-site.xml: |