当前位置: 首页 > article >正文

构建基于Hadoop的数据湖解决方案

一、实验目的

1.  理解分布式数据存储的基本概念和应用场景。

2.  学习Hadoop生态系统的架构及其在构建数据湖中的关键作用。

3.  掌握使用Hadoop和相关工具(如HDFS, Hive)构建简单的数据湖解决方案。

二、实验环境准备

1.  JAVA环境准备:确保Java Development Kit (JDK) 已安装并配置好环境变量。

2.  Hadoop环境准备:安装并配置Hadoop环境,确保Hadoop的各个组件可以在伪分布式模式下运行。

三、实验教材参考

《大数据存储》,谭旭,人民邮电出版社,2022,ISBN 978-7-115-59414-3。

四、实验内容与步骤

1、安装hive

1. 在官网下载Hive的安装包Index of /dist/hive

2. 将安装包上传到namenode中的software文件夹中。

3. 同样上传到datanode的software文件夹中

4. 查看software目录中的内容

5. 解压安装包并将文件夹改名为Hive

6. 修改/etc/profile,添加环境变量

重新加载配置环境文件

7. 初始化元数据库

2、安装MySQL

1. 将安装包上传到namenode中的software文件夹中。

2. 解压MySQL安装包

3. 卸载系统自带的mariadb

4. 安装MySQL依赖

5. 安装MySQL-Client

6. 安装MySQL-Server

7. 启动MySQL

启动MySQL服务器

查看服务器状态

设置MySQL开机自启动

8. 查看MySQL密码

随机生成的密码为:hogN+fA!s16q

9. 使用密码进入MySQL

10. 设置新密码:Wzh@5678

11. 更改密码为简单密码:000000

12. 进入MySQL

查询user表:SELECT user,host from user;

修改user表,把Hostname表内容修改为%:update user set host=”%” where user=”root”;

刷新:flush privileges;

3、 配置Hive元数据到MySQL

1. 新建Hive元数据库

(1)登录MySQL

(2)创建Hive元数据库

2. 将MySQL的JDBC驱动拷贝到Hive的lib目录下

3. 在$HIVE_HOME/conf目录下新建hive-site.xml文件

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- jdbc连接的URL -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://namenode:3306/metastore?useSSL=false</value>
    </property>
    
    <!-- jdbc连接的Driver-->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    
	<!-- jdbc连接的username-->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>

    <!-- jdbc连接的password -->
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>000000</value>
    </property>

    <!-- Hive默认在HDFS的工作目录 -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>
</configuration>

4. 初始化Hive元数据库,修改为采用MySQL存储元数据库

schematool -dbType mysql -initSchema

根据报错信息,schematool 在初始化 Hive Metastore Schema 时由于 MySQL 的连接配置问题失败。连接失败的原因:java.sql.SQLNonTransientConnectionException : Public Key Retrieval is not allowed。这是因为 MySQL 的默认身份验证模式(caching_sha2_password)可能与 Public Key Retrieval 相关联,而 JDBC 驱动默认不允许公钥自动检索。

编辑hive-site.xml文件,找到 javax.jdo.option.ConnectionURL 配置,添加 allowPublicKeyRetrieval=true 参数。

5. 启动

6. 查看 hdfs dfsadmin -report

7. 确认safe mode状态

检查namenode是否仍存在 Safe Mode。

强制退出Safe Mode。

确认Safe Mode状态。

8. 启动Hive

9. SLF4J错误信息

SLF4J(Simple Logging Facade for Java) 没有找到具体的日志实现库(例如 Logback 或 Log4j),导致它默认使用了“NOP”实现(即不输出日志)。虽然不会影响程序功能,但日志系统无法正常工作。

下载需要的jar文件。

无法解析主机地址。

首先检查是否可以连接网络。

可以连接到网络,检查/etc/resolv.conf文件配置。

文件里没有内容,配置有效的 DNS 服务器。

重新下载:

wgethttps://repo1.maven.org/maven2/org/slf4j/slf4j-log4j12/1.7.30/slf4j-log4j12-1.7.30.jar

wget https://repo1.maven.org/maven2/log4j/log4j/1.2.17/log4j-1.2.17.jar

如果是Hive,则将上述JAR文件下载到Hive的lib目录:

cd /software/hive/lib

重启Hive验证。

4、构建简单的数据湖

使用HDFS命令行工具上传样本数据文件(如CSV格式的交易数据)至HDFS。

学习Hive的基本概念和操作,创建Hive表来映射到HDFS中的数据文件。

1. 准备数据文件data.csv

2. 在本地文件系统中,将文件上传到HDFS的/data目录中

hdfs dfs -mkdir -p /data

hdfs dfs -put /software/hadoop/data/data.csv /data

3. 验证文件是否上传成功

hdfs dfs -ls /data

4. 启动Hive,创建一个新数据库

CREATE DATABASE IF NOT EXISTS data_lake;

USE data_lake;

5. 创建Hive表来映射到HDFS中的数据文件

CREATE EXTERNAL TABLE IF NOT EXISTS transactions (

    transaction_id INT,

    customer_id INT,

    amount DOUBLE,

    transaction_date STRING

)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY ','

STORED AS TEXTFILE

LOCATION '/data'

TBLPROPERTIES ("skip.header.line.count"="1"); 

6. 验证表结构

DESCRIBE transactions;

7. 检查表内容

SELECT * FROM transactions LIMIT 10;

5、 数据探索与查询

使用Hive执行SQL查询,进行数据探索,如计算总交易量、查询特定条件的交

易记录等。

1. 查询金额大于100 的交易记录

2. 按客户统计交易金额

SELECT customer_id, SUM(amount) AS total_amount

FROM transactions

GROUP BY customer_id

ORDER BY total_amount DESC;

3. 按日期统计交易量,统计每天的交易总金额和交易次数

SELECT transaction_date,

       SUM(amount) AS daily_total_amount,

       COUNT(transaction_id) AS daily_transaction_count

FROM transactions

GROUP BY transaction_date

ORDER BY transaction_date;


http://www.kler.cn/a/512357.html

相关文章:

  • linux平台RTMP|RTSP播放器如何回调SEI数据?
  • Linux系统之kill命令的基本使用
  • uniapp——App 监听下载文件状态,打开文件(三)
  • 论文阅读笔记:AI+RPA
  • Linux 高级路由与流量控制-用 tc qdisc 管理 Linux 网络带宽
  • Linux自动挂载磁盘的方法
  • 通过以太网加载linux内核、设备树、根文件系统方法(以stm32MP135为例)
  • 插入排序 计数排序 堆排序 快速排序 归并排序
  • 降维算法:主成分分析
  • Dockerfile另一种使用普通用户启动的方式
  • 高效建站指南:通过Portainer快速搭建自己的在线网站
  • 开源许可证(Open Source Licenses)
  • 【React】类组件更新的底层逻辑
  • wordpress网站发布失败:此响应不是合法的JSON响应
  • 模版字符串复制粘贴支持换行
  • 【Block总结】TFF和SFF模块,时间和尺度的特征融合|即插即用
  • 【大数据2025】Yarn 总结
  • Android 11.0 第三方app接收不到开机广播问题的解决以及开机自启动功能实现二
  • Agent Laboratory: Using LLM Agents as Research Assistants 论文简介
  • 低代码系统-UI设计器核心介绍
  • MATLAB基础应用精讲-【数模应用】误差函数(erf)(附Java、python、R语言和MATLAB代码实现)
  • 高效安全文件传输新选择!群晖NAS如何实现无公网IP下的SFTP远程连接
  • Spring MVC:设置响应
  • Kafka 日志存储 — 文件目录及日志格式
  • Objective-C语言的数据库交互
  • goland map学习-实践使用练习:判断存在及遍历