(课堂笔记)hadoop 基础使用

Hadoop是一个分布式集群架构,专为处理PB级海量数据而设计,通过多节点协作实现数据存储、清洗和转换。


其核心组件包括HDFS(分布式文件系统)、MapReduce(计算引擎)和Yarn(资源调度器)。


相比传统数据库(如Oracle)在处理上亿条数据时的性能瓶颈,Hadoop通过任务拆分分发机制(如按部门分组计算平均薪资)显著提升处理效率。


典型生态工具涵盖Hive、Spark、Zookeeper等。


操作上支持HDFS文件交互(put/get/appendToFile)和集群管理(初始化、启动监控等)。


该架构通过分布式计算解决了单机处理大规模数据的局限性。


hadoop


hadoop 是一个集群架构,为了处理海量的数据(PB级别)清洗、转换、存储的一个架构。------大型的计算机。

Oracle 处理单表上亿条数据就有压力。这个时候需要一个集群架构,去做任务的拆解分发,分发给多个服务器去共同处理。这个架构就可以是 hadoop 集群架构。


集群环境:由多个服务器节点组建到一起的运行环境


集群环境:

  • 分布式集群环境:由多个节点(CLUSTER)组建而成的

  • 伪分布式集群环境:由单节点组建而成,模拟多节点运行的集群环境


计算机的必备组件有:

sql 复制代码
| 计算机 | Hadoop |
|--------|--------|
| 硬盘 | HDFS ------ 分布式的文件存储系统 |
| CPU | MapReduce ------ 计算引擎 |
| 任务管理器 | Yarn ------ 资源调度 |

示例:查询每个部门的员工平均薪资

sql 复制代码
SELECT 
    DEPTNO, AVG(SAL)
FROM EMP -- 有 10 亿条数据
GROUP BY DEPTNO;

这个 SQL 丢到 hadoop 环境运行。

  1. 基于分组键 DEPTNO 拆分 EMP 表的 10 亿条数据

    • 10 号部门:3.3 亿条

    • 20 号部门:3.3 亿条

    • 30 号部门:3.4 亿条

  2. 将 10 号部门的数据丢给 A 节点去计算 AVG(SAL)

    将 20 号部门的数据丢给 B 节点去计算 AVG(SAL)

    将 30 号部门的数据丢给 C 节点去计算 AVG(SAL)

  3. 将 A、B、C 三个节点计算好的结果进行合并。


Hadoop 中常见的组件有:

  1. Hive ------ 数仓管理工具(Hive 数据库)

  2. Zookeeper ------ 集群管理工具

  3. Spark ------ 计算引擎(基于内存,可用于离线/实时)

  4. Azkaban ------ 调度工具

  5. Kafka ------ 消息队列

  6. Hbase ------ NoSQL 数据库

  7. Sqoop ------ ETL 工具


启动 Hadoop 集群

  1. 删除历史 tmp 文件

    bash

    bash 复制代码
    rm -rf /tmp/hadoop-hadoop/dfs/name/*
    rm -rf /tmp/hadoop-hadoop/dfs/data/*
  2. 集群初始化

    bash

    bash 复制代码
    hadoop namenode -format
  3. 初始化元数据库

    bash

    bash 复制代码
    mysql
    drop database metastore;    -- 忽略报错

    然后按 ctrl + z

  4. 切换到集群运行目录

    bash

    bash 复制代码
    cd /opt/module/hadoop-3.3.0/
  5. 执行启动命令

    bash

    bash 复制代码
    sbin/start-all.sh
  6. 启动验证

    输入 jps,验证有 6 个进程就说明没问题。


访问 web 界面:

  • HDFS 的 web 界面:http://192.168.5.100:9870/explorer.html

  • 集群的监控/调度页面:http://192.168.5.100:8088/cluster


HDFS 相关指令


HDFS 的指令(文件/目录必须使用绝对路径):

bash

复制代码
hadoop fs -Linux命令   # 在 Linux 窗口运行

例如:

bash

bash 复制代码
hadoop fs -mkdir -p /2608/test
hadoop fs -touch /2608/test/aaa.txt
hadoop fs -chmod -R 777 /2608

HDFS 与节点之间的文件交互

Linux 本地文件上传到 HDFS:

bash

复制代码
hadoop fs -put 本地文件路径 hdfs的存放路径

示例:将本地 task.sh 存放到 HDFS 的 /2608/test 目录

bash

bash 复制代码
hadoop fs -put task.sh /2608/test

验证:查看 HDFS 上是否存在该文件。

练习:

  1. 在 HDFS 上新建目录 /test

  2. 将本地 Linux 环境的 /home/hadoop/2608/task.sh 文件上传到 HDFS 的 /test 目录下

  3. 验证 HDFS 上是否能看到 task.sh 的文件内容


HDFS 文件下载到 Linux 本地:

bash

复制代码
hadoop fs -get hdfs的存放路径 本地文件路径

示例:将 HDFS 上 /2608/test/task.sh 文件下载到本地

bash

bash 复制代码
hadoop fs -get /2608/test/task.sh /home/hadoop/2608/test/aaa.sh

将本地文件内容合并写入 HDFS 文件
  1. HDFS 存在空文件 /2608/test/file

    bash

    bash 复制代码
    hadoop fs -touch /2608/test/file
  2. 将本地 Linux 的 aaabbb 文件内容写入到 HDFS 的 /2608/test/file

    bash

    bash 复制代码
    hadoop fs -appendToFile aaa bbb /2608/test/file

总结:

  • get:从 HDFS 取文件到 Linux 本地

  • put:从 Linux 本地文件存放到 HDFS

  • appendToFile:把本地文件追加写入到 HDFS 文件


练习:

  1. 将 HDFS 的 /test/task.sh 文件下载到本地 /home/hadoop/2608 目录

  2. /home/hadoop/2608 目录新建文件 xxx 以及 yyy,内容分别是 1~5 以及 6~10

  3. 在 HDFS 上新建文件 /test/num

  4. 将本地的 xxx 以及 yyy 写入到 HDFS 文件 /test/num


配置 Host

  1. 新建 hosts 文件

    bash 复制代码
    # Copyright (c) 1993-2009 Microsoft Corp.
    #
    # This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
    #
    # This file contains the mappings of IP addresses to host names. Each
    # entry should be kept on an individual line. The IP address should
    # be placed in the first column followed by the corresponding host name.
    # The IP address and the host name should be separated by at least one
    # space.
    #
    # Additionally, comments (such as these) may be inserted on individual
    # lines or following the machine name denoted by a '#' symbol.
    #
    # For example:
    #
    #      102.54.94.97     rhino.acme.com          # source server
    #       38.25.63.10     x.acme.com              # x client host
    
    # localhost name resolution is handled within DNS itself.
    #	127.0.0.1       localhost
    #	::1             localhost
    
    192.168.5.100 node100
  2. 打开 Windows 的目录 C:\Windows\System32\drivers\etc

  3. hosts 文件覆盖进去

目的:让本地 Windows 知道 node100 映射的 IP 是 192.168.5.100

相关推荐
水火既济__4 小时前
加快hive效率
数据仓库·hive·hadoop
lifewange2 天前
Hive 数据库 增删改 完整操作指南
数据库·hive·hadoop
WL_Aurora2 天前
Sqoop数据迁移工具从入门到精通
hive·hadoop·sqoop
蜀道山老天师2 天前
Prometheus监控Hadoop集群(实操完整版,含避坑指南)
大数据·linux·运维·hadoop·云原生·prometheus
极光代码工作室3 天前
基于大数据的交通流量分析系统
大数据·hadoop·python·数据分析·数据可视化
卷毛迷你猪4 天前
快速实验篇(A1)干旱气象数据上传至HDFS
大数据·hadoop·hdfs
头歌实践平台4 天前
Hadoop开发环境搭建
java·大数据·hadoop
KANGBboy4 天前
hadoop冷热数据分离
大数据·hadoop·分布式
WL_Aurora5 天前
YARN资源调度器深度解析 | 架构原理、作业提交流程
大数据·hadoop·yarn