在Hadoop中进行数据的归档和存储的主要方式是:
- 使用HDFS进行海量数据存储:
- 存储结构类似传统文件系统。
- 支持高容错性与负载均衡。
- 文件自动划分为block并存放在不同节点。
- 使用HBase进行实时随机存储:
- 针对海量二维表数据提供实时读写能力。
- 基于列族存储和Region划分。
- 支持灵活的行键与列键查询。
- 使用Hive进行数据仓库管理:
- 基于HDFS实现海量数据的 Metadata 管理。
- 使用类SQL语言(HQL)进行分析查询。
- 支持分区、分桶、索引等提高查询性能。
- Ozone实现S3兼容的对象存储:
- 提供类似AWS S3的对象存储服务。
- 基于Ozone管理存储对象的元数据。
- 弹性、简单、可扩展,更容易管理。
- Hive分区表实现数据归档示例:
- 创建分区表:
CREATE TABLE page_views (viewTime INT, userid BIGINT, ...)
PARTITIONED BY (dt STRING)
- 加载数据并指定分区:
LOAD DATA INPATH '/user/hive/pv.txt'
INTO TABLE page_views
PARTITION (dt='2019-12-31');
数据归档和存储的主要作用是:
- 高效存储大量静态数据与海量的元数据。
- 支持海量数据的随机实时访问。
- 简化数据的管理、查询与分析。
- 通过分区、分桶与索引优化数据存储结构。
来看一些简单示例:
- HDFS – 文件上传:
hdfs dfs -put pv.txt /user/hive/
- HBase – 创建表:
CREATE TABLE 'page_views' (
'viewTime' int,
'userid' bigint,
'cf1' text,
...)
SPLITS => ['2019-01-01', '2019-07-01', '2020-01-01']
- Hive – 创建分区表:
CREATE TABLE page_views (
viewTime INT,
userid BIGINT,
...)
PARTITIONED BY (dt STRING)
- 加载数据到分区:
LOAD DATA INPATH '/user/hive/pv.txt'
INTO TABLE page_views
PARTITION (dt='2019-12-31');
所以通过HDFS存储文件数据,HBase存储随机实时数据,加上Hive进行数据的归档与管理,我们可以满足各类大数据场景的存储需求与服务能力。