Hadoop基础知识
什么是Hadoop?
Hadoop是Apache软件基金会下的一个开源项目,它允许对大型数据集进行分布式处理。Hadoop的核心组件包括HDFS(Hadoop分布式文件系统)和MapReduce编程模型。HDFS用于存储海量数据,而MapReduce则用于分布式计算。
Hadoop的核心组件
-
HDFS(Hadoop Distributed File System):
- HDFS是一个分布式文件系统,设计用于在商品硬件上运行,提供高容错性和高吞吐量的数据访问。它将数据分块存储,并将这些块分布在集群中的多个节点上。
- HDFS有两个主要的组件:NameNode和DataNode。NameNode负责管理文件系统的元数据,而DataNode负责存储实际的数据块。
-
MapReduce:
- MapReduce是一种编程模型,用于在大规模集群上处理和生成大数据集。它将计算任务分为两个主要步骤:Map和Reduce。
- 在Map步骤中,输入数据被分割成一系列独立的块,每个块由一个Map任务处理。Map任务处理后,会生成中间结果。接着,Reduce步骤会处理这些中间结果,生成最终输出。
-
YARN(Yet Another Resource Negotiator):
- YARN是Hadoop的资源管理器,它管理计算资源并调度用户的应用程序。它将资源管理和任务调度分开,提供了更大的灵活性和可扩展性。
Hadoop的生态系统
Hadoop的生态系统非常庞大,除了核心的HDFS和MapReduce外,还包括许多其他工具和框架,如:
- Pig:一种用于分析大型数据集的脚本平台。
- HBase:一个分布式的、面向列的存储系统。
- Sqoop:用于在Hadoop和关系数据库之间传输数据的工具。
- Flume:用于高效地从多个数据源收集、聚合和传输日志数据。
Hive基础知识
什么是Hive?
Hive是基于Hadoop的一个数据仓库工具,提供了类SQL的查询语言——HiveQL,用户可以通过HiveQL对存储在Hadoop中的数据进行查询和管理。Hive将SQL查询转换为MapReduce任务执行,使得数据分析更加方便快捷。
Hive的架构
Hive的架构主要包括以下几个部分:
- Hive Client:用户通过Hive Client提交查询请求,可以使用Hive Shell、JDBC/ODBC或Web界面。
- Hive Services:包括CLI(命令行接口)、Web Interface和Thrift Server等。
- Hive Driver:接收查询并将其转换为一系列执行任务,协调执行过程。
- MetaStore:存储关于表、分区、列等元数据的信息。
- Execution Engine:负责执行HiveQL查询,将查询翻译成MapReduce任务并在Hadoop上运行。
HiveQL的基本语法
HiveQL是一种类SQL的查询语言,用户可以使用它对存储在Hadoop中的数据进行操作。以下是一些基本的HiveQL语法示例:
-
创建数据库:
CREATE DATABASE mydb;
-
使用数据库:
USE mydb;
-
创建表:
CREATE TABLE employees ( id INT, name STRING, age INT, salary FLOAT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
-
加载数据:
LOAD DATA LOCAL INPATH '/path/to/data.csv' INTO TABLE employees;
-
查询数据:
SELECT * FROM employees WHERE age > 30;
-
插入数据:
INSERT INTO TABLE employees VALUES (1, 'John Doe', 35, 75000.0);
-
删除数据:
DELETE FROM employees WHERE age < 25;
Hive的高级功能
-
分区:
- 分区是Hive中的一种数据组织方式,能够显著提高查询性能。通过对表进行分区,用户可以将数据按照某一字段的值进行划分。
- 例如,可以按日期对销售记录表进行分区:
CREATE TABLE sales ( item STRING, quantity INT, price FLOAT ) PARTITIONED BY (date STRING);
-
桶(Buckets):
- 桶是一种更细粒度的数据分区方式,通过哈希分桶,能够进一步提高查询效率。
- 例如,可以对员工表进行桶分:
CREATE TABLE employees ( id INT, name STRING, age INT, salary FLOAT ) CLUSTERED BY (id) INTO 4 BUCKETS;
-
UDF(用户自定义函数):
- Hive支持用户定义自己的函数(UDF),用于实现更复杂的查询和数据处理逻辑。
- 例如,可以创建一个简单的UDF来计算两个数的和:
public class MyUDF extends UDF { public int evaluate(int a, int b) { return a + b; } }
Hadoop和Hive的实际应用
数据预处理
在大数据分析过程中,数据预处理是一个重要的环节。通过Hadoop和Hive,可以高效地对海量数据进行清洗、转换和合并。
数据分析和挖掘
Hive提供了强大的数据查询能力,使得数据分析变得更加方便。用户可以使用HiveQL进行复杂的查询和统计分析,同时结合Hadoop的计算能力,能够处理大规模数据集。
数据存储和管理
HDFS提供了高效的分布式存储能力,能够存储和管理海量数据。而Hive的元数据存储和管理功能,使得用户可以方便地管理数据表和分区。
标签:HDFS,Hadoop,笔记,查询,MapReduce,Hive,数据 From: https://www.cnblogs.com/zeyangshuaige/p/18300641