Hadoop简介
Hadoop是什么:
- Hadoop是Apache基金会开发的一套开源软件平台。
- 它的功能是利用服务器集群对海量数据进行分布式处理。
- 核心组件包括HDFS、MapReduce、YARN和Hadoop基础功能库。
Hadoop生态系统:
- 广义上的Hadoop指的是一个更广泛的概念,即Hadoop生态圈。
- Hadoop是云计算PaaS层的解决方案之一,广泛应用于数据服务基础平台建设、用户画像、网站点击流日志数据挖掘等。
HDFS(分布式文件存储系统)
- HDFS是Hadoop的核心组件之一,用于存储海量数据。
- 它将文件分割成多个块(block),并将这些块存储在不同的节点上。
- HDFS设计用于高吞吐量的访问模式,适合大规模数据集的存储。
MapReduce(分布式计算框架)
- MapReduce是一种分布式计算框架,采用“分而治之”的思想。
- 它将复杂的计算任务分解成多个小任务,这些小任务可以在不同的服务器上并行执行。
- 最终汇总每个小任务的结果,完成整个计算任务。
YARN(资源管理和调度器)
- YARN负责集群资源的管理和任务调度。
- 它使得多个应用程序可以共享同一个集群资源。
Hive与传统数据库的比较
- 查询语言:Hive使用HQL(Hive Query Language),而传统数据库使用SQL。
- 数据存储:Hive使用HDFS,而传统数据库通常使用本地文件系统或原始设备。
- 执行引擎:Hive使用MapReduce,而传统数据库使用Executor。
- 执行延迟:Hive的执行延迟较高,而传统数据库的执行延迟较低。
- 处理数据规模:Hive适合处理大规模数据,而传统数据库适合处理小规模数据。
- 索引:Hive在0.8版本后支持位图索引,而传统数据库有更复杂的索引。
Hive的数据定义与操作
创建数据库:
CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name=property_value,...)];
示例:
create database if not exists kaikeba;
查看数据库信息:
desc database extended database_name;
删除数据库:
drop database if exists kaikeba; drop database if exists kaikeba cascade; -- 强制删除数据库
数据的导入和导出
从本地导入到表中:
load data local inpath '本地路径' overwrite into table table_name [partition(partcol1=val1,...)];
从HDFS导入到表中:
load data inpath 'HDFS路径' into table table_name [partition(partcol1=val1,...)];
将Hive表中的数据导出到本地:
insert overwrite local directory '本地路径' select * from table_name;
将Hive表中的数据导出到HDFS:
insert overwrite directory 'HDFS路径' select * from table_name;
关闭Hive和Hadoop
关闭Hive:
quit;
关闭Hadoop:
stop-all.sh