一.数据仓库概述
数据仓库(Data Warehouse)是一个用于存储和管理来自多个不同来源的大量结构化数据的系统。它是组织中的决策支持系统(DSS)的核心组件,用于支持复杂的数据分析、商业智能(BI)、报表和数据挖掘任务。
数据仓库的特点通常包括:
- 主题导向:数据仓库中的数据是围绕组织的关键业务领域或主题(如销售、财务、市场等)进行组织的。
- 集成性:数据来自不同来源且经过清洗、转换和集成,以保证数据的一致性和质量。
- 非易失性:一旦数据进入数据仓库,就很少被修改,确保数据的稳定性和历史数据的可追溯性。
- 时间变化:数据仓库通常包含历史数据,而不仅仅是当前的实时数据,使得可以进行时间序列分析。
数据仓库的构建和使用过程通常包括以下几个阶段:
- 数据抽取:从多个数据源中提取数据。
- 数据清洗和转换:清理数据中的错误和不一致性,并将它们转换为数据仓库所需的格式。
- 数据加载:将清理和转换后的数据加载到数据仓库中。
- 数据刷新和更新:定期或根据需要将新数据添加到数据仓库,同时保留旧数据。
- 查询和分析:业务分析师、数据科学家和决策者利用查询工具、报告工具和分析应用程序来探索数据,发现见解,支持决策。
- 数据管理:持续监控和维护数据仓库的性能,确保数据安全和质量。
数据仓库可采用不同的架构,如星型模式(Star Schema)、雪花模式(Snowflake Schema)和事实星座模式(Galaxy Schema)。这些架构帮助在查询过程中高效地组织数据。
数据仓库与传统数据库的主要区别在于,数据仓库用于分析和报告,而传统数据库(如在线事务处理系统,OLTP)主要用于处理日常的业务事务。
随着技术的发展,数据仓库也在不断演进,出现了如数据湖(Data Lake)、云数据仓库等新概念与技术。数据湖是一个更为灵活的存储系统,它能够存储大量无结构和半结构化数据,而云数据仓库则是托管在云服务提供商上的数据仓库,可以提供弹性、可伸缩性和按需付费等优势。
二.环境配置
2.1 hadoop环境的搭建
先决条件:
- Java Development Kit (JDK):因为Hadoop是用Java编写的,所以你需要安装JDK。在Linux上,可以使用包管理器安装JDK。
- SSH:在分布式环境中,Hadoop 需要无密码的SSH 访问每台机器。
下载Hadoop:
- 从Apache Hadoop官网下载适合你系统的Hadoop版本的tar.gz压缩文件。
解压Hadoop:
- 使用
tar -xzvf hadoop-x.y.z.tar.gz
命令解压缩Hadoop。
- 使用
配置Hadoop环境变量:
- 打开你的 shell 配置文件,如
.bashrc
,设置HADOOP_HOME
变量并将Hadoop的bin和sbin目录添加到PATH
变量。
export HADOOP_HOME=/path/to/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
然后,执行source .bashrc
使变量生效。
- 打开你的 shell 配置文件,如
配置Hadoop设置文件:
在
$HADOOP_HOME/etc/hadoop/
目录下,有多个配置文件需要编辑,主要几个主要配置文件如下:hadoop-env.sh
:设置JDK路径。
export JAVA_HOME=/path/to/javacore-site.xml
:配置HDFS的核心设置,如NameNode的地址。 <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/path/to/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/path/to/hadoop/tmp/dfs/data</value> </property> </configuration>hdfs-site.xml
:配置HDFS的高级设置,如副本数。
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>mapred-site.xml
:配置MapReduce作业的设置,如使用的框架
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> </configuration>yarn-site.xml
:配置YARN的资源管理设置。
格式化HDFS文件系统:
- 在首次启动Hadoop之前,必需格式化HDFS文件系统。通过下面的命令完成:
hadoop namenode -format
- 在首次启动Hadoop之前,必需格式化HDFS文件系统。通过下面的命令完成:
启动Hadoop集群:
- 使用以下命令启动Hadoop集群服务:
start-dfs.sh
start-yarn.sh
- 使用以下命令启动Hadoop集群服务:
验证安装:
- 要验证Hadoop安装是否成功,你可以使用
jps
命令查看Java进程,以确保NameNode,DataNode,ResourceManager,NodeManager等都运行了。
- 要验证Hadoop安装是否成功,你可以使用
这就是安装和配置Hadoop的一般步骤,在伪分布式和完全分布式模式下的过程相似,但配置设置细节(如在core-site.xml
,hdfs-site.xml
,yarn-site.xml
中指定的主机名和端口)将依据实际的集群设置而有所变化。由于Hadoop的复杂性,安装过程可能会遇到若干问题,需要根据具体的错误信息逐一解决。此外,这并没有涉及到安全设置、优化和集群管理等进一步的配置。
2.2 Hive环境的搭建
Hive 是一个构建在 Hadoop 之上的数据仓库软件,用于提供数据摘要、查询和分析。Hive 使得使用类 SQL 语法(HiveQL)查询数据变得简单,而这些查询会转换成 MapReduce、Tez 或 Spark 作业。为了搭建 Hive 环境,你需要先有一个运行中的 Hadoop 集群。
以下是在基于 Linux 的系统中搭建 Hive 环境的步骤:
- 安装 Java: Hive 需要 Java 环境,所以确保已经安装了 Java Development Kit (JDK)。
- 安装 Hadoop: Hive 是建立在 Hadoop 之上的,所以在安装 Hive 之前需要先安装并配置好 Hadoop。
- 下载 Hive: 从 Apache Hive 官方网站下载适合你系统的 Hive 版本的 tar.gz 压缩文件。
- 解压缩 Hive 安装包: 使用
tar -xzvf apache-hive-x.y.z-bin.tar.gz
命令将 Hive 的安装包解压到你选择的安装目录,例如/usr/local/hive
。 - 配置 Hive 环境变量: 打开你的 shell 配置文件(例如
.bashrc
或.bash_profile
),添加下面的 Hive 环境变量和更新 PATH 变量。export HIVE_HOME=/path/to/hive export PATH=$PATH:$HIVE_HOME/bin
使配置生效,运行source .bashrc
或者重启终端。 - 配置 Hive: Hive 的配置文件在
$HIVE_HOME/conf
目录下。你可以将hive-default.xml.template
复制为hive-site.xml
并根据需要编辑它。通常需要进行的配置包括连接到 Hadoop 的 HDFS 和 Hadoop 的 YARN。在hive-site.xml
中设置配置属性,比如: <configuration> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property> <property> <name>hive.exec.local.scratchdir</name> <value>/tmp/hive</value> </property> <property> <name>hive.metastore.uris</name> <value>thrift://<METASTORE_SERVER_HOST>:<METASTORE_PORT></value> </property> ... </configuration> - 初始化 Metastore: Hive 存储元数据(表定义、列数据类型等)在一个叫 Metastore 的数据库中。你需要初始化 Metastore 数据库。默认情况下,Hive 使用内嵌的 Derby 数据库,你可以通过运行下面的命令来初始化它:
schematool -dbType derby -initSchema
你也可以配置 Hive 使用外部数据库如 MySQL、PostgreSQL 等作为 Metastore,这通常在生产环境下推荐使用。
版权归原作者 波本,不加冰 所有, 如有侵权,请联系我们删除。