🔍hadoop第一难之搭建环境

265 阅读4分钟

前言:

目前的大数据处理方案,目前流行的是Spark 和 flink。 但是hadoop仍然有不少的市场存量。很多还是需要对离线数据计算。其中需要分布式计算,分布式计算则依赖分布式存储,HDFS本身就是适配分布式计算而诞生的存储系统,现如今还是用它。所以有学习的价值。

难点

学习使用hadoop,其实是要学他一个巨大的生态。如果小白想搭建一个多节点的Hadoop集群,可能会遇到以下问题:

  • [概念巨多] :完了,要长脑子了,放弃
  • [搭建复杂] :大量搭建步骤,命令很多,很多步骤都有可能出现问题。试错成本过高,放弃
  • [资料杂乱] :一堆资料很多都是简单的拼凑,而且很多内容现在已经不可用了,放弃

目的:

这个hadoop生态的搭建和部署大部分公司会有专门的运维人员去部署,我们其实更关注如何开发。

故我按照hadoop的3大核心组件,介绍其原理和尽可能简单的步骤让大家顺利搭建hadoop,体验和了解hadoop的使用。

介绍

hadoop的核心三大组件

HDFS(存)

大数据的分布式存储系统。脱胎于gfs的论文(gfs)。采用主从架构,其中 NameNode 负责管理文件系统的命名空间和客户端的访问,而 DataNode 负责存储实际的数据块

MapReduce (算)

hadoop计算框架,看作是2个步骤,map将大数据集分成多个小块,分布式计算处理。reduce,归并处理,把分布式的计算结果聚合归并,生成最终的输出结果。但是由于其性能较差。计算框架可以通过yarn进行管理替换,如离线计算spark或实时计算flink。

YARN (管理)

Hadoop 的资源管理和调度框架,它负责管理和调度集群中的计算资源。

新集成和拓展

  1. Apache Spark
    • 集成:Spark 可以在 Hadoop 集群上运行,并且可以与 HDFS 集成。
    • 优势:内存计算、多语言支持、丰富的 API、实时处理、机器学习等。
    • 使用场景:适用于需要高性能和复杂数据处理的任务。
  1. Apache Flink
    • 集成:Flink 也可以在 Hadoop 集群上运行,并且可以与 HDFS 集成。
    • 优势:实时数据流处理、低延迟、高吞吐量、精确一次的状态管理。
    • 使用场景:适用于实时数据处理和流处理任务。
  1. Apache Tez
    • 集成:Tez 是一个在 YARN 上运行的计算框架,旨在优化复杂的数据处理任务。
    • 优势:更灵活的 DAG(有向无环图)执行模型,可以更高效地处理复杂的批处理任务。
    • 使用场景:适用于需要高效处理复杂数据流的批处理任务。
  1. Apache HBase
    • 集成:HBase 是一个建立在 HDFS 之上的分布式列式存储系统。
    • 优势:提供随机访问和强一致性的数据存储,适用于大规模数据的实时读写。
    • 使用场景:适用于需要快速查询和更新大规模数据的应用。
  1. Apache Hive
    • 集成:Hive 是一个基于 Hadoop 的数据仓库工具,提供 SQL 接口来查询和管理 HDFS 中的大规模数据集。
    • 优势:支持 SQL 查询,易于使用,适合数据分析和报表生成。
    • 使用场景:适用于需要进行复杂数据分析和报表生成的任务。

搭建:

环境前置准备

windows环境

git基础

docker下载

配置相关的docker加速,不然docker拉东西会失败

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "registry-mirrors": [
    "https://docker.1panel.live"
  ]
}

基于docker部署

传统的方式是使用虚拟机。但这种方式占用的资源比较多。而且操作起来还要熟悉vm相关的配置

Docker可以看做是一种轻量级的虚拟机,占用资源少。同时部署简易快速,就是时间推移,由于镜像的稳定性,区别于虚拟机,不会受到不同系统版本或环境的影响。

1.环境项目准备

git clone https://github.com/big-data-europe/docker-hadoop.git

2.运行命令启动容器

docker-compose up

访问HDFS的webui

 http://127.0.0.1:9870/dfshealth.html#tab-overview

yarn的集群资源

http://127.0.0.1:8088/

使用

打开docker的命令行,里面有个测试项目

我们现在可以得到下面的命令,还需要input.txt和结果的输出目录

hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar 
wordcount 

通过docker的view file按钮快速打开内部的文件目录信息

导入我们的字符文件,直接拖拽即可

Hello Hadoop
Hello World
This is a test file
Hadoop is great
Big data processing with Hadoop
MapReduce is powerful
Distributed computing
Hadoop HDFS

创建 HDFS 目录并上传文件input.txt

hdfs dfs -mkdir -p /user/larry/input
hdfs dfs -put /tmp/input.txt /user/larry/input

最后执行

hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar wordcount /user/larry/input /user/larry/output

查看结果

hdfs dfs -cat /user/larry/output/part-r-00000

总结

额,上面ai已经总结的不错。这个一篇文章还是比较粗糙。很多大数据的内容在整个行业中也是属于比较难的内容。希望和大家共勉,拥抱大数据时代,体会大数据之美。

更多知识了解

www.cnblogs.com/tree1123/p/…
blog.csdn.net/CatchLight/…