第三周-大数据学习 正式使用 hadoop
深圳模具-正式学习使用 hadoop 大数据集群
一、HDFS相关命令:
1、查看HDFS下目录结构及文件 hdfs dfs -ls -R /
2、创建文件目录/tmp hdfs dfs -mkdir /tmp
3、删除/tmp目录 hdfs dfs -rm -r /tmp
4、复制当前目录下a.txts到HDFS文件系统 hdfs dfs -put a.txt /inputFile
5、列出/tmp目录 hdfs dfs -ls /tmp
6、查看/inputFile/a.txt文件内容 hdfs dfs -cat /inputFile/a.txt
7、查看HDFS状态 hdfs dfsadmin -report
用这个命令可以快速定位出哪些节点down掉了,HDFS的容量以及使用了多少,
以及每个节点的硬盘使用情况。当然NameNode有个http页面也可以查询,
但是这个命令的输出更适合我们的脚本监控dfs的使用状况。
下面是关于 YARN 的操作:
yarn.nodemanager.aux-service
spark_shuffle
mapreduce_shuffle 要引入对应的架包
yarn.nodemanager.aux-services.mapreduce_shuffle.class
采用 FIFO的方式, 这个方式并不好 , 好的方式是 公平调度-Fair .
org.apache.hadoop.mapred.ShuffleHandler
yarn.nodemanager.aux-services.spark_shuffle.class
org.apache.spark.network.yarn.YarnShuffleServic
FairScheduler.xml
yarn.scheduler.fair.user-as-default-queue false true
yarn.scheduler.fair.preemption false true
yarn.resourcemanager.scheduler
org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler
spark.shuffle.service.port 7337
第四周
Hbase 。
Hbase -> Google bigtable 开源实现 ---2008年----> apache hadoop 下面的项目
采用的公司 : Facebook Intel yahoo baidu alibaba tencent 360 等等 nosql 数据库
SQL (Structured Query Language) 数据库,指关系型数据库。
主要代表:SQL Server,Oracle,MySQL(开源),PostgreSQL(开源)。
NoSQL(Not Only SQL)泛指非关系型数据库。
主要代表:MongoDB,Redis,CouchDB。 supersech hbase , kylin , chiohouse phesto
关系型数据库的特点: 面向行的, Nosql 是面向列的。
高并发状态下: 分库分表 读写分离 带来数据一致性问题 ,海量数据实现出来很复杂,后期迁移也很复杂。
高可用,可靠性,可伸缩性的措施: 主备 、 主从 、 多主。 本身的可扩展性很差。 增加节点或者宕机要做迁移。
Hbase 首先是一个大表。
1.关系型数据库理论 - ACID
ACID,是指数据库管理系统(DBMS)在写入或更新资料的过程中,为保证事务(transaction)是正确可靠的,
所必须具备的四个特性:原子性(atomicity,或称不可分割性)、一致性(consistency)、
隔离性(isolation,又称独立性)、持久性(durability)。
A – Atomicity – 原子性
一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。
事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有被执行过一样。
C – Consistency – 一致性
在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,
这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
I – Isolation – 隔离性
数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时
由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、
读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
D – Durability – 持久性
事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
关系型数据库严格遵循ACID理论。
但当数据库要开始满足横向扩展、高可用、模式自由等需求时,需要对ACID理论进行取舍,不能严格遵循ACID。
以CAP理论和BASE理论为基础的NoSQL数据库开始出现。
2.分布式系统理论
2.1 分布式系统介绍
分布式系统的核心理念是让多台服务器协同工作,完成单台服务器无法处理的任务,尤其是高并发或者大数据量的任务。分布式是NoSQL数据库的必要条件。
分布式系统由独立的服务器通过网络松散耦合组成的。每个服务器都是一台独立的PC机,服务器之间通过内部网络连接,内部网络速度一般比较快。因为分布式集群里的服务器是通过内部网络松散耦合,各节点之间的通讯有一定的网络开销,因此分布式系统在设计上尽可能减少节点间通讯。此外,因为网络传输瓶颈,单个节点的性能高低对分布式系统整体性能影响不大。比如,对分布式应用来说,采用不同编程语言开发带来的单个应用服务的性能差异,跟网络开销比起来都可以忽略不计。
因此,分布式系统每个节点一般不采用高性能的服务器,而是使用性能相对一般的普通PC服务器。提升分布式系统的整体性能是通过横向扩展(增加更多的服务器),而不是纵向扩展(提升每个节点的服务器性能)实现。
分布式系统最大的特点是可扩展性,它能够适应需求变化而扩展。企业级应用需求经常随时间而不断变化,这也对企业级应用平台提出了很高的要求。企业级应用平台必须要能适应需求的变化,即具有可扩展性。比如移动互联网2C应用,随着互联网企业的业务规模不断增大,业务变得越来越复杂,并发用户请求越来越多,要处理的数据也越来越多,这个时候企业级应用平台必须能够适应这些变化,支持高并发访问和海量数据处理。分布式系统有良好的可扩展性,可以通过增加服务器数量来增强分布式系统整体的处理能力,以应对企业的业务增长带来的计算需求增加。
2.2 分布式存储的问题 – CAP理论
如果我们期待实现一套严格满足ACID的分布式事务,很可能出现的情况就是系统的可用性和严格一致性发生冲突。在可用性和一致性之间永远无法存在一个两全其美的方案。由于NoSQL的基本需求就是支持分布式存储,严格一致性与可用性需要互相取舍,由此延伸出了CAP理论来定义分布式存储遇到的问题。
CAP理论告诉我们:一个分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)、分区容错性(P:Partitiontolerance)这三个基本需求,并且最多只能满足其中的两项。
对于一个分布式系统来说,分区容错是基本需求,否则不能称之为分布式系统。因此架构师需要在C和A之间寻求平衡。
HBase 的物理存储
HBase 表中的所有行都是按照行键的字典序排列的。
因为一张表中包含的行的数量非常多,有时候会高达几亿行,所以需要分布存储到多台服务器上。
因此,当一张表的行太多的时候,HBase 就会根据行键的值对表中的行进行分区,每个行区间构成一个“分区(Region)”,
包含了位于某个值域区间内的所有数据,如图 1 所示。
图 1 HBase的Region存储模式图
Region 是按大小分割的,每个表一开始只有二个 Region,随着数据不断插入到表中,Region 不断增大,
当增大到一个阈值的时候,Region 就会等分为两个新的 Region。
当表中的行不断增多时,就会有越来越多的 Region,如图 2 所示。
图 2 HBase的Region分裂示意
Region 是 HBase 中数据分发和负载均衡的最小单元,默认大小是 100MB 到 200MB。
不同的 Region 可以分布在不同的 Region Server 上,但一个 Region 不会拆分到多个 Region Server 上。
每个 Region Server 负责管理一个 Region 集合。
如图 3 所示。
图 3 HBase的Region分布模式
Region 是 HBase 在 Region Server 上数据分发的最小单元,但并不是存储的最小单元。
事实上,每个 Region 由一个或者多个 Store 组成,每个 Store 保存一个列族的数据。
每个 Store 又由一个 memStore 和 0 至多个 Store File 组成,如图 4 所示。
Store File 以 HFile 格式保存在 HDFS 上。
图 4 HBase的Region存储模式
HBase 的逻辑架构
在分布式的生产环境中,HBase 需要运行在 HDFS 之上,以 HDFS 作为其基础的存储设施。
HBase 的上层是访问数据的 Java API 层,供应用访问存储在 HBase 中的数据。
HBase 的集群主要由 Master、Region Server 和 Zookeeper 组成,
具体模块如图 5 所示。
图 5 HBase的系统架构
1)Master
Master 主要负责表和 Region 的管理工作。
表的管理工作主要是负责完成增加表、删除表、修改表和查询表等操作。
Region 的管理工作更复杂一些,Master 需要负责分配 Region 给 Region Server,协调多个 Region Server,检测各个 Region Server 的状态,并平衡 Region Server 之间的负载。
当 Region 分裂或合并之后,Master 负责重新调整 Region 的布局。如果某个 Region Server 发生故障,Master 需要负责把故障 Region Server 上的 Region 迁移到其他 Region Server 上。
HBase 允许多个 Master 结点共存,但是这需要 Zookeeper 进行协调。当多个 Master 结点共存时,只有一个 Master 是提供服务的,其他的 Master 结点处于待命的状态。
当正在工作的 Master 结点宕机时,其他的 Master 则会接管 HBase 的集群。
2)RegionServer
HBase 有许多个 Region Server,每个 Region Server 又包含多个 Region。Region Server 是 HBase 最核心的模块,负责维护 Master 分配给它的 Region 集合,并处理对这些 Region 的读写操作。
Client 直接与 Region Server 连接,并经过通信获取 HBase 中的数据。
HBase 釆用 HDFS 作为底层存储文件系统,Region Server 需要向 HDFS 写入数据,并利用 HDFS 提供可靠稳定的数据存储。
Region Server 并不需要提供数据复制和维护数据副本的功能。
3)Zookeeper
Zookeeper 的作用对 HBase 很重要。
首先,Zookeeper 是 HBase Master 的高可用性(High Available,HA)解决方案。
也就是说,Zookeeper 保证了至少有一个 HBase Master 处于运行状态。
Zookeeper 同时负责 Region 和 Region Server 的注册。
HBase 集群的 Master 是整个集群的管理者,它必须知道每个 Region Server 的状态。
HBase 就是使用 Zookeeper 来管理 Region Server 状态的。
每个 Region Server 都向 Zookeeper 注册,由 Zookeeper 实时监控每个 Region Server 的状态,并通知给 Master。
这样,Master 就可以通过 Zookeeper 随时感知各个 Region Server 的工作状态。
需要搭建 ZooKepper 集群 , 采取奇数作为基础, 要不断选取出唯一的领导者 。
然后在搭建 Hbase 集群。
Hlog = Mysql 中的 bingLog
Hbase 逻辑架构
安装 Hbase
1、下载软件从 hbase.apache.com
2、上传到 \bigdata\tools
3、tar -zxvf hbase-1.2.3tar.gz
4、cd /bigdata/tools/hbase1.2.3/config
5、vi hbase-env.sh
export ...
6、vi hbase-site.xml
我们上课说的: start-hbase.sh
查看: jsp 或者 http://192.168.1.119:16030
安装一个插件 Phoenix , 就可以用 mysql 数据库的命令看了 , 等于是一个 shell .
API可以在 Java后端做软件查看 。