主成分分析 R语言

主成分分析(Principal Component Analysis,PCA),
是一种总计办法。通过正交变换将一组或者存在相关性的变量转换为一组线性不相干的变量,转换后的那组变量叫主成分。

参考 
http://hbase.apache.org/book.html\#\_architecture

原理:

在用计算分析方法研讨多变量的课题时,变量个数太多就会大增课题的繁杂。人们当然希望变量个数较少而收获的音信较多。在许多景况,变量之间是有必然的相关关系的,当五个变量之间有自然相关涉嫌时,可以解释为这七个变量反映此课题的音信有一定的重合。主成分分析是对于本来提出的所有变量,将再次的变量(关系密不可分的变量)删去多余,建立尽可能少的新变量,使得这么些新变量是两两不相干的,而且那个新变量在浮现课题的音信方面尽可能保持原有的新闻。

进行主成分分析重点步骤如下:

  1. 目标数量标准
  2. 目的以内的相关性判定;
  3. 规定主成分个数m;
  4. 主成分Fi表达式;
  5. 主成分Fi命名;

主成分分析(principal component
analysis,PCA)是一种降维技术,把几个变量化为可以显示原始变量超过一半音讯的个别多少个主成分。
设X有p个变量,为n*p阶矩阵,即n个样本的p维向量。首先对X的p个变量寻找正规化线性组合,使它的方差达到最大,那么些新的变量称为第一主成分,抽取第一主成分后,第二主成分的抽取方法与第一主成分相同,依次类推,直到各主成分累积方差达到总方差的终将比例。

主成分分析实例

p=princomp(USArrests,cor=TRUE)
summary(p,loadings=TRUE)

语言 1

—-Standard deviation 标准差 其平方为方差=特征值
—-Proportion of Variance 方差进献率
—-Cumulative Proportion 方差累计进献率

screeplot(p,type="lines")

语言 2

图中的点在第多个成分的下降已经变得分外平稳了,因此选用前四个变量就能博得较好的消息表达,那也就表示后四个变量可以屏弃。

也足以使用loadings参数中展现的周到值对主成分举行营造方程
y=-0.536murder-0.583assault-0.278urbanpop-0.543rape
y=0.418murder+0.188assault-0.873urbanpop-0.167rape

pre<-predict(p)
pre

语言 3

对个主成分的值举办预测的结果

Architecture

65. Overview

65.1. NoSQL?

HBase是一种”NoSQL”数据库。“NoSQL”一般指的是非曲直关系型数据库,大家领悟,关系型数据库匡助SQL,也就是说HBase不帮衬SQL。非关系型数据库有为数不少种,BerkeleyDB是一种本地非关系型数据库,不过,HBase是分布式数据库。从技术上来讲,HBase更像是“Data
Store”,而不是“Data
Base”,因为它缺乏许多关系型数据库的特点,比如:列类型、协助索引、触发器、查询语言等等。(PS:意思是,从技术的角度讲,HBase更像一个数据存储,而不像数据库)

HBase集群增加通过增加RegionServer来完成。若是一个集群从10扩展到20个RegionServer,那么,不仅仅是储存容量增添一倍,连处理能力也会增添一倍。对于关系型数据库而言,也得以用scale做到那样,不过必要提出的是,那亟需专门的硬件和存储设备。HBase特性如下:

  • 强一致性读写:HBase不是一个“最终一致性”的数目存储。那使得它更符合高速度的成团义务。
  • 机关分区:HBase的表通过region被分布在集群中,而region是自动拆分并再度分布数据行的。
  • 自动RegionServer容灾
  • Hadoop/HDFS集成:HBase协助HDFS作为它的分布式文件系统
  • MapReduce:HBase接济通过MapReduce基于HBase作为数据源的恢宏的并行处理
  • Java Client API:HBase帮助通过Java
    API编程的方法来做客
  • Thrift/REST
    API:HBase也支撑Thrift和REST那样的非Java的客户端
  • Block Cache and Bloom Filters
  • Operational
    Management:HBase提供web界面

65.2. When Should I Use HBase?

并不是具备的题材都符合用HBase

首先、确保您有充裕的数据。若是您有大宗的数量行,那么HBase是一个不错的挑三拣四。如若您唯有数千或者百万的数码,那么使用传统的关系型数据库可能更好,因为实际你的那些数量或者只必要一个照旧七个节点就能处理得完,那样的话集群中的其余的节点就高居空闲状态。

第二、确保您不需求用到关系型数据库的性状(比如:固定类型的列、协助索引、事务、查询语言等等)。基于关系型数据库创设的运用不可能经过简单的改观JDBC驱动来传输到HBase中。从RDBMS到HBase是一心相反的两套设计。

其三、确保您有充分的硬件。因为当DataNode数量低于5的时候HDFS将无法健康办事了。

65.3. What Is The Difference Between HBase and Hadoop/HDFS?

HDFS是一个分布式的文件系统,适合储存大文件,但它无法提供高速的个性化的在文书中找寻。HBase是打造于HDFS基础之上的,并且它协助对大表的中的记录举行急速搜索和翻新。HBase内部将数据存放在HDFS中被索引的“StoreFiles”上以供高速搜索。

69. Master

HMaster是Master Server的一个兑现。Master
Server负责监视集群中颇具的RegionServer实例,并且它也是具备元数据变动的一个对外接口。在分布式集群中,典型的Master运行在NameNode那台机器上。

69.3. Interface

HMasterInterface接口是操作元数据的首要接口,提供以下操作:

  • Table (createTable, modifyTable,
    removeTable, enable, disable)
  • ColumnFamily (addColumn, modifyColumn,
    removeColumn)
  • Region (move, assign, unassign)

70. RegionServer

HRegionServer是RegionServer的落到实处,它承受服务并管理regions。在分布式集群中,一个RegionServer寻常运行在一个DataNode上。

70.1. Interface

HRegionRegionInterface既包罗数据的操作也饱含region维护的操作

  • Data (get, put, delete, next,
    etc.)
  • Region (splitRegion, compactRegion,
    etc.)

70.5. RegionServer Splitting Implementation

region
server处理写请求,它们被累积在内存中一个叫memstore的地点。一旦memstore文件满了,内容将被写到磁盘上作为store
file。这一个事件称为memstore flush。随着store
file的无休止积累,RegionServer将统一它们成大文件,以缩减store
file的数码。在每一次刷新或者联合之后,region中数量的多少会时有暴发变更。RegionServer按照切分策略来查阅是还是不是region太大了或者应当被切分。

逻辑上,region切分的操作很粗略。找一个老少咸宜的岗位,将region中的数据切分成多个新的region。但是,这几个处理的长河并不不难。当切分发生的时候,数据并不是随即被重写到那一个心创造的闺女region上。

 

 

71. Regions

语言 4

73. HDFS

语言 5

Data Model

在HBase中,数据被积存在表中,有行和列。那些术语和关系型数据有一部分重合,当然那不是一个很好的类比,但是它对我们想想HBase的表示一个多维的map很有救助。

Table

  由多行组成

Row

  HBase中的行由一个row
key和一个或七个列组成。Rows在储存的时候根据row
key的字典序存储。正因为如此,row
key的规划就突显更加重大。基于那或多或少,相关连的行互相之间存在附近。平时,row
key是一个网站的域名。假若您的row
key是域名,你应该以倒置的措施存储它们(比如:org.apache.www,org.apache.mail,org.apache.jira等等)。那样的话,所有的apache域名在表中是相近的职位,而不是被子域名的率先片段分离。

Column

  HBase中的列由一个列簇和一个列修饰符组成,它们中间用冒号分隔(:)

Column Family

  列簇由一多元的列和它们的值组成,那是根据质量考虑的。每一个列簇都有一星罗棋布的储存属性,比如:是或不是它们的值应该被缓存到内存中,它们的数码怎么着被削减,它们的row
key怎么样被编码,等等。表中的每一行都有相同的列簇,即使一个加以的行在给定的列簇上从不存储任何数据。

Column Qualifier

  一个列修饰符被添加到列簇中为了给指定的多寡片段提供索引。即使,给定的列簇是content,那么,一个列修饰符可能是content:html,其他的还有可能是content:pdf。固然,列簇在表创造的时候就固定了,然而列修饰符是不确定的,而且分化的行可能有不通的列修饰符。

Cell

语言 6

Timestamp

  一个timestamp被写在各类value的边缘,它是一个value的本子修饰符。默许的,timestamp代表数量被RegionServer写入的时刻,你也可以在写多少的时候指定一个不比的timestamp值

20. Conceptual View

语言 7

在这几个事例中,有一个表叫“webtable”,它富含两行数据(com.cnn.www和com.example.www)和几个列簇(contents,anchor,people)。对于第一行(com.cnn.www),anchor包涵两列(anchor:cssnsi.com,anchor:my.look.ca),contents包蕴一列(contents:html)。row
key为“com.cnn.www”的行有5个本子,而row
key为“com.example.www”的行有1个版本。contents:html列包涵全部网站的HTML。

在这一个表格中的空的单元格并不占用空间

下图是一个模拟,目的在于表明表明地方我们所说的,便于大家知晓:

语言 8

21. Physical View

即便如此,在概念上,表看起来像是一行一行的,但大体上,它们是服从列簇被积存的。一个新的列修饰符可以在任意时刻被添加到列簇中。

语言 9

在前头的概念视图中的空的单元格是不被储存的。因而,请求contents:html列并且timestamp为t8将回来没有值。然则,如果不点名timestamp,那么某个列的一大半分值都会被再次来到。如果指定三个本子,唯有找到的率先个会被重临,因为数量是按部就班timestamp降序存储的。

22. Namespace

一个命名空间是表的一个逻辑分组

23. Table

24. Row

行依据row key字典升序存储

25. Column Family

Columns in Apache HBase
are grouped into column
families.

语言,列簇中颇具的列成员都有平等的前缀。例如,列courses:history和courses:math都是courses那一个列簇的积极分子。用冒号分隔列簇和列修饰符。列簇前缀必须由得以打印输出的字符组成。列修饰符可以由任意字节组成。列簇必须在表被定义的时候就宣称好,由此列就不须求在表创制的时候定义了,并且可以每日新增。

物理上,所有的列簇成员被贮存在一块儿。

26. Cells

A {row, column, version} tuple exactly specifies a cell in
HBase.

27. Data Model Operations

数据模型有4个至关首要操作,分别是Get、Put、Scan和Delete。这几个操作是行使在表上的。

27.1. Get

回来指定行的特性

27.2. Put

添加新的行到表中,或者更新已经存在的行

27.3. Scans

环顾特定属性的多行

27.4. Delete

从表中删除一行

28. Versions

在HBase中,{row,column,version}可以规定一个单元格。当行和列被压缩成字节的时候,版本用long类型指定。在HBase中,版本以降序存储,所以,近日的值总是第一被察觉。

29. Sort Order

对此所有的数据模型操作,HBase以数据被积存时的顺序再次来到。首先按行排序,其次按列簇,再其次按列修饰符,最后是timestamp。(PS:前是八个是字典升序,最后一个timestamp是降序)

30. Column Metadata

不存储列的元数据,由此,HBase可以支撑每一行有许多列,行与行之间可以有二种不相同的列。

31. Joins

HBase不间接join操作,至少不援救关系型数据库那种join。在HBase中,读取数据通过Get和Scan。

33. Schema Creation

语言 10

34. Table Schema Rules Of Thumb

  • regions的深浅在10~50GB之间
  • cells的轻重不当先10MB
  • 杰出的,每个表的列簇在1~3个之间。HBase的表不应当被设计成模仿关系型数据库的表
  • 一个有1~2个列簇的表所拥有的regions几乎在50~100个左右
  • 保证你的列簇名字尽可能的短

50. HBase as a MapReduce Job Data Source and Data Sink

HBase能够当做MapReduce作业的数据源。对于读写HBase的MapReduce作业,提出选用TableMapper和TableReducer。

若果你运行HBase作为数据源的MapReduce作业,你必要在布置文件中指定表和列名。

当您从HBase读取数据的时候,TableInputFormat请求regions的列表并且作为一个map。

 

54. HBase MapReduce Examples

 

发表评论

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

网站地图xml地图