小菜鸟

java菜鸟号正在起航

Hive 安装全指南:从下载到启动,Derby 测试 → MySQL 生产,照着配就能跑

使用的版本是3.1.2

Hive 的安装分两步:

  1. 下载解压:五分钟搞定
  2. 元数据配置:这是重点——默认用 Derby(只能单客户端测试),生产必须换 MySQL

前提条件:Hadoop 要先跑起来

Hive 跑在 Hadoop 上,所以 Hadoop 集群必须先启动。

# 确认 Hadoop 已启动
start-dfs.sh
start-yarn.sh

# 检查进程
jps
# 应该看到:NameNode、DataNode、ResourceManager、NodeManager

如果没有这些进程,先回去把 Hadoop 搭好。

版本要求:

  • JDK 8(Hive 3.1.2 对 JDK 11 支持有限,建议 JDK 8)
  • Hadoop 3.x(本文以 3.3.0 为例)

下载解压

# 下载(清华镜像)
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

# 解压
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /usr/local/myself/

# 重命名(方便后面配路径)
mv /usr/local/myself/apache-hive-3.1.2-bin /usr/local/myself/hive-3.1.2

配环境变量

编辑 ~/.bash_profile

export HIVE_HOME=/usr/local/myself/hive-3.1.2
export PATH=$HIVE_HOME/bin:$PATH
阅读全文 »

HTTP 常见状态码详解

HTTP 状态码是服务器对客户端请求的处理结果的数字标识,通过三位数字的编码直观反映请求的状态(如成功、错误、重定向等)。理解状态码不仅能帮助开发者快速定位问题,还能优化用户体验(如根据状态码引导用户操作)。以下是对各类状态码的详细解析:

1XX 信息性状态码(临时响应)

1XX 状态码表示服务器已接收请求,正在进一步处理,需要客户端继续等待或配合。这类状态码很少直接暴露给用户,主要用于协议层面的中间交互。

状态码 含义 典型场景
100 Continue 服务器已接收请求头,允许客户端继续发送请求体 客户端发送大型数据(如文件上传)前,先发送请求头试探服务器是否接受,服务器返回 100 后客户端再发送主体
101 Switching Protocols 服务器同意切换到客户端请求的协议(如 HTTP/2、WebSocket) 客户端通过Upgrade首部请求升级协议(如Upgrade: websocket),服务器确认后返回 101 并切换协议

2XX 成功状态码

2XX 状态码表示客户端请求被服务器成功接收并处理,是最理想的响应结果。

状态码 含义 典型场景
200 OK 请求成功,服务器返回对应资源 普通的 GET 请求(如打开网页、获取 API 数据)
201 Created 请求成功且创建了新资源 POST 请求创建资源(如注册用户、发布文章),响应体通常包含新资源的详情
202 Accepted 请求已接收,但尚未处理完成 异步任务(如批量数据处理、邮件发送),服务器先确认接收,后续通过其他方式通知结果
204 No Content 请求成功,但无响应体 DELETE 请求删除资源(无需返回数据),或 PUT 请求更新资源后无需返回内容
206 Partial Content 服务器成功处理部分请求(范围请求) 客户端通过Range首部请求资源的部分内容(如断点续传、大文件分片下载),响应体包含指定范围的数据

3XX 重定向状态码

3XX 状态码表示客户端需要通过进一步操作(如跳转至新地址)才能完成请求,浏览器通常会自动处理重定向。

阅读全文 »

Hive 全面解析:用 SQL 查 Hadoop,不用写 MapReduce

使用的版本是3.1.2

MapReduce 能处理 PB 级数据,但它有个问题:写一个简单的统计,要写几十行 Java 代码。

  • 统计词频:要写 Mapper、Reducer、Driver,打包 JAR,上传,提交作业
  • 做个分组聚合:同样的流程再来一遍

Hive 解决的正是这个问题:把 SQL 翻译成 MapReduce 作业,让你用 SQL 查 HDFS 上的数据。

用户写 SQL → Hive 解析 → 翻译成 MapReduce → 提交到 YARN 执行 → 返回结果

Hive 是什么?”SQL 接口 + Hadoop 执行引擎”

Hive 的三个核心定位:

定位 说明
数据仓库工具 不是数据库,是数据仓库——面向分析、批量处理
SQL 解析器 把 HQL(Hive SQL)翻译成 MapReduce/Tez/Spark 任务
元数据管理 表结构、分区、列类型存在 Metastore(MySQL 里)

Hive 不存数据——数据在 HDFS 上。Hive 不执行计算——计算在 MapReduce/Tez/Spark 上。Hive 只负责”把 SQL 翻译成任务”。

Hive 解决了什么问题?

问题: MapReduce 的 Java API 太重了,写一个简单的聚合都要搭框架。

解法: 用 SQL 写逻辑,Hive 自动生成 MapReduce 代码。

阅读全文 »

HTTP 报文格式详解

HTTP(Hypertext Transfer Protocol,超文本传输协议)是互联网中用于数据通信的核心协议,其报文格式定义了客户端与服务器之间请求和响应的结构。理解 HTTP 报文格式是解析网络请求、调试接口和优化通信的基础。

HTTP 请求报文格式

HTTP 请求报文由请求行请求头空行请求体四部分组成,结构如下:

<method> <url> <version>  // 请求行
<headers>                  // 请求头(多个键值对)
                           // 空行(分隔请求头与请求体)
<requestbody>              // 请求体(可选)

请求行(Request Line)

请求行是报文的第一行,包含三个关键信息,以空格分隔:

  • 请求方法(Method):表示客户端希望服务器执行的操作(如 GET、POST)。
  • URL(Uniform Resource Locator):请求的资源路径(如/api/user)。
  • HTTP 版本(Version):使用的 HTTP 协议版本(如HTTP/1.1HTTP/2)。
阅读全文 »

消息队列选型指南:ActiveMQ、RabbitMQ、RocketMQ、Kafka 对比

消息队列的选型需结合业务场景(如吞吐量、延迟、功能需求)、团队技术栈及运维成本综合判断。本文基于四大主流消息队列(ActiveMQ、RabbitMQ、RocketMQ、Kafka)的核心特性,分析其适用场景与优劣势,帮助做出合理选择。

核心特性对比表

特性 ActiveMQ RabbitMQ RocketMQ Kafka
开发语言 Java Erlang Java Scala/Java
协议支持 多协议(JMS、AMQP、MQTT、STOMP 等) AMQP、MQTT、STOMP 等 自定义协议(兼容 JMS) 自定义协议(基于 TCP)
单机吞吐量 万级(约 1-10k/s) 万级(约 1-20k/s) 10 万级(约 10-100k/s) 10 万级(约 50-200k/s,最高可达百万级)
延迟性能 ms 级 μs 级(微秒级,延迟最低) ms 级 ms 级(优化后可接近 μs 级)
可用性 高(主从架构) 高(主从 / 集群架构) 极高(分布式集群) 极高(分布式集群,分区容错)
功能特性 支持事务、定时消息、死信队列等 丰富的路由策略、插件机制、管理界面 事务消息、定时消息、重试机制 日志聚合、流处理、分区副本
生态与社区 成熟但更新慢 活跃,文档丰富 阿里维护,中文文档多 非常活跃,大数据领域生态完善
典型场景 传统企业应用、多协议集成 复杂路由场景、低延迟通信 电商、金融等业务系统 日志收集、大数据流处理

各消息队列深度解析

1. ActiveMQ:老牌多协议消息队列

  • 优势:
    • 支持多种协议(JMS、AMQP、MQTT 等),适合多系统集成(如传统系统与新系统通信)。
    • 功能全面,支持事务消息、定时消息、死信队列等,文档成熟。
  • 劣势:
    • 单机吞吐量较低(万级),不适合高并发场景。
    • 社区更新缓慢(近年年更新频率降低),对新特性支持不足。
  • 适用场景:
    • 传统企业级应用(如 ERP、OA 系统)。
    • 需要兼容多协议的异构系统集成。
    • 中小规模业务,对吞吐量要求不高。

2. RabbitMQ:高性能与灵活路由的代表

阅读全文 »
0%