【精】hadoop、HIVE大数据从0到1部署及应用实战

目录

基本概念

Hadoop生态

HIVE

hdfs(hadoop成员)

yarn(hadoop成员)

MapReduce(hadoop成员)

spark

flink

storm

HBase

kafka

ES

实战

安装并配置hadoop

环境准备

准备虚拟机

安装ssh并设置免密登录

安装jdk

安装、配置并启动hadoop

添加hadoop环境变量,不然启动会报错

Hadoop伪分布模式的搭建

配置免密登录

HDFS的配置

YARN的配置

启动Hadoop

启动hdfs

YARN集群启停

Hadoop集群启停(HDFS+YARN)

使用hadoop完成单词统计任务

hdfs存入文件

提交MapReduce任务

HIVE实战

基本概念

安装HIVE

#初始化元数据库

启动hive

尝试hive操作

hiveserver2实战

HIVE的表

Hive的复杂数据类型

ETL介绍

指标

#BI

磨刀不误砍柴工

Linux常用命令

#建文件夹

#关防火墙

#查看主机名

#删除

#查看启动服务

查看端口占用

hadoop命令

查看namenodes配置


基本概念

起初在谷歌研发,相关关键技术论文发表:

Google三篇论文

  • The' Google file systemy:谷歌分布式文件系统GFS

  • 《MapReduce:Simplified Data Processing on Large Clusters》:谷歌分布式计算框架MapReduce

  • 《Bigtable:A Distributed StorageSystemforStructured Data》:谷歌结构化数据存储系统

大数据开源项目hadoop的三驾马车,hdfs分布式存储,mapreduce分布式计算,yarn分布式调度

大数据的5V特征:

  • 数据量大:一般以P(1000个TB)、E(100万个TB)或Z(10亿个TB)为计量单位

  • 数据类型繁多:包括结构化、半结构化和非结构化的数据,数据来源多样,文本、日志、视频、图片、地理位置等;

  • 价值密度低:大数据所具备的巨大体量,使其所包含信息较少。因此需要利用通过数据分析与机器学习更快速的挖掘出有价值的数据,带来更多的商业价值。

  • 速度快:数据增长速度快、并要求处理速度快、对时效性要求也高,海量数据的处理需求不再局限在离线计算当中。

  • 真实性:数据的真实性和可信赖度差异较大,因此数据分析的精确度也有所不同。

大数据平台本质上就是对海量数据从采集、存储、计算、应用、管理、运维的多方位、多维度的组合研究设计,从而建设合理、高效的大数据平台架构。HDFS是Hadoop提供的分布式存储框架,它可以用来存储海量数据,MapReduce是Hadoop提供的分布式计算框架,它可以用来统计和分析HDFS上的海量数据,而Hive则是SQL On Hadoop,Hive提供了SQL接口,开发人员只需要编写简单易上手的SQL语句,Hive负责把SQL翻译成MapReduce,提交运行。通过Hive命令行可以对数据进行创建表、删除表、往表中加载数据、分区、将表中数据下载到本地等操作。

Hadoop生态

HIVE

Hive是一个基于Hadoop的数据仓库工具,用于进行数据提取、转化、加载,以及存储、查询和分析大规模数据。Hive可以将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,将SQL语句转变成MapReduce任务来执行。

Hive的主要功能和作用包括:

  1. 数据存储与管理:Hive能够将结构化数据存储在Hadoop分布式文件系统(HDFS)中,并提供表、分区、桶等抽象概念,方便管理和组织数据。

  2. 数据转换与集成:Hive支持ETL(抽取、转换、加载)操作,可以对原始数据进行清洗、转换和集成,以适应特定的分析需求。

  3. 查询与分析:通过HiveQL查询语言,用户可以使用类似于SQL的语法来执行复杂的查询操作,包括筛选、聚合、连接等,从而实现数据探索和分析。

  4. 扩展性与可扩展性:由于基于Hadoop生态系统构建,Hive具有良好的可扩展性,能够处理大规模的数据,并支持并行计算。

  5. 用户界面与工具支持:除了命令行接口外,Hive还提供了Web界面(如Hue)和其他第三方工具(如Apache Zeppelin),使用户能够更直观地进行交互和可视化分析。

Hive的特性包括面向主题性、集成性、非易失性和时变性。Hive的常见应用场景包括大数据分析、数据仓库、数据清洗和转换、数据集成、数据可视化和日志分析等。

总的来说,Hive是一个功能强大的数据仓库工具,可以帮助用户更好地管理和分析存储在Hadoop中的大规模数据。

hdfs(hadoop成员)

HDFS,即Hadoop Distributed File System,是一个被设计成适合运行在通用硬件上的分布式文件系统。它的主要目标是提供高吞吐量的数据访问,并适用于大规模数据集的应用。

在HDFS中,文件被切分成多个数据块,每个数据块默认大小为128MB。这些数据块会被分散存储在集群中的不同机器上,以实现数据的冗余备份和高可靠性。每个数据块都会有多个副本,这些副本分布在不同的机架上,以提高数据的容错性。

HDFS采用主从结构模型,由一个NameNode和若干个DataNode组成。NameNode作为主服务器,负责管理文件系统的命名空间和客户端对文件的访问操作。而DataNode则负责存储数据,每个数据块在DataNode上都有唯一的块ID。

在HDFS中,数据复制是提供容错性和高可用性的关键机制。默认情况下,每个数据块会有三个副本,其中一个副本存储在本地节点上,另外两个副本存储在不同的机架上的其他节点上。这样,即使某个节点或机架发生故障,数据仍然可以从其他副本中恢复。

此外,HDFS还通过检测数据块的副本是否损坏或丢失来提供容错恢复。如果某个数据块的副本损坏或丢失,HDFS会自动从其他副本中选择一个进行复制,以确保数据的完整性和可用性。

总之,HDFS是一个高度容错性的系统,适合部署在廉价的机器上,提供高吞吐量的数据访问,非常适合大规模数据集上的应用。它通过文件切分、数据复制和容错恢复等机制,实现了数据的冗余备份和高可靠性。

yarn(hadoop成员)

Hadoop YARN(Yet Another Resource Negotiator,另一种资源协调者)是Hadoop的一个分布式资源调度系统,它专门用于为分布式计算程序提供计算资源。YARN的基本原理是将计算框架的计算任务和资源需求分配给集群中可用的计算资源。

在YARN中,集群资源被抽象为一组可用的计算容器,每个容器都有一定的CPU、内存和其他资源。应用程序被划分为多个任务,每个任务对应一个或多个容器。任务由应用程序管理器(ApplicationMaster)负责维护和执行。资源管理器(ResourceManager)是YARN的核心组件,负责集群资源的全局调度和分配。它与节点管理器(NodeManager)通信,报告节点的状态和可用资源,并执行资源的分配和释放。

YARN的基本架构包括ResourceManager、ApplicationMaster和NodeManager。ResourceManager控制整个集群并管理应用程序向基础计算资源的分配。ApplicationMaster管理在YARN内运行的应用程序的每个实例,负责协调来自ResourceManager的资源,并通过NodeManager监视容器的执行和资源使用。NodeManager管理YARN集群中的每个节点,提供针对集群中每个节点的服务,从监督容器的终生管理到监视资源和跟踪节点健康。

YARN通过将计算资源从底层的集群中抽象出来,并提供一个统一的接口供应用程序进行资源管理和调度,实现了大规模数据处理任务的资源调度和执行。这种分布式计算框架能够实现高效的资源利用和任务执行,提高数据处理的性能和可伸缩性。同时,YARN还提供了容错机制和故障恢复功能,以确保任务的正常执行。

总之,Hadoop YARN是一个分布式资源调度系统,它通过抽象和管理集群资源,为上层应用提供统一的资源管理和调度。YARN的基本原理是将计算任务和资源需求分配给集群中可用的计算资源,通过ResourceManager、ApplicationMaster和NodeManager的协作,实现资源的全局调度和分配,以及任务的执行和监控。YARN的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处,使得分布式计算程序能够在YARN上进行高效的资源调度和执行。

提交MapReduce程序至YARN运行

这些内置的示例MapReduce程序代码,都在:

$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar 这个文件内。

可以通过 hadoop jar 命令来运行它,提交MapReduce程序到YARN中。

语法: hadoop jar 程序文件 java类名[程序参数]...[程序参数]

MapReduce(hadoop成员)

MapReduce是一种编程模型,用于处理大规模数据集(通常大于1TB)的并行运算。它主要包含两个核心概念:Map(映射)和Reduce(归约)。这两个概念都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。MapReduce模型极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。

MapReduce的基本原理可以分为以下几个步骤:

  1. **Map阶段**:在这个阶段,用户需要定义一个Map函数,该函数会处理输入数据集中的每一个元素,将其映射成一组新的键值对。例如,可以将一个文本文件的内容按照单词进行拆分,每个单词作为一个键,出现的次数作为值。

  2. **Shuffle阶段**:在Map阶段完成后,系统会对所有的键值对进行排序,确保所有相同的键都在一起。这个过程称为Shuffle。

  3. **Reduce阶段**:在这个阶段,用户需要定义一个Reduce函数,该函数会处理所有具有相同键的键值对,并生成最终的输出结果。例如,可以将所有相同的单词的出现次数进行累加,得到每个单词的总出现次数。

MapReduce模型允许用户在不了解分布式系统底层细节的情况下,利用大规模的计算资源处理海量的数据。它提供了一个庞大但设计精良的并行计算软件框架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及收集计算结果。这使得软件开发人员可以专注于业务逻辑的实现,而无需关心并行计算涉及到的数据分布存储、数据通信、容错处理等复杂细节。

MapReduce模型最早是由Google公司提出并应用于其搜索引擎中的大规模网页数据并行化处理。由于其普适性,现在已经被广泛应用于各种大规模数据处理问题中。

spark

Spark是一种快速、通用、可扩展的大数据分析引擎,它基于内存计算的大数据并行计算框架,包含了SparkSQL、Spark Streaming、GraphX、MLlib等子项目。Spark不仅支持Scala编写应用程序,还支持Java和Python等语言进行编写,特别是Scala是一种高效、可拓展的语言,能够用简洁的代码处理较为复杂的处理工作。Spark的通用性强,其生态圈即BDAS(伯克利数据分析栈)包含了多个组件,这些组件能够无缝集成并提供一站式解决平台。此外,Spark的容错性也很高。

Spark已经被广泛应用于各个行业,包括金融、电商、医疗、制造业等。例如,在金融行业,Spark被用于风险评估、诈骗检测、客户分析等;在电商行业,Spark被用于商品推荐、用户行为分析、库存管理等;在医疗行业,Spark被用于病例分析、药物研发、医疗数据管理等;在制造业,Spark被用于生产数据分析、质量控制、供应链管理等。

总的来说,Spark是一种功能强大、易于使用、通用性强的大数据分析引擎,已经成为越来越多技术团队和企业的首选工具。

Flink是一个开源的流处理框架,专为分布式、高性能、随时可用和准确的流处理应用程序打造。它不仅可以处理无界和有界数据流,还具备有状态计算的能力。这意味着程序可以保持已经处理过的数据状态,从而确保在数据源无序或晚到达时,仍能保持结果的准确性。

Flink的特性包括:

  1. 精确一次的状态一致性:Flink支持仅一次语义状态计算,确保在发生故障时能够无缝恢复,并保持数据的精确性,实现零数据丢失。

  2. 高吞吐量和低延迟:Flink的设计使得它能够在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算,从而实现高吞吐量和低延迟。

  3. 容错性:Flink的容错机制是轻量级的,能够在同一时间维持高吞吐率和提供仅一次的一致性保证。

  4. 版本控制:Flink的保存点提供版本控制机制,使得应用程序的更新或历史数据的再加工不会丢失,且在最小的停机时间内完成。

此外,Flink还具有广泛的应用场景,包括机器学习、事件驱动应用、复杂事件处理以及实时报表和可视化等。通过Flink的流处理能力,可以实现对实时数据的特征提取和模型训练,提高机器学习的效率和准确性。同时,Flink也可以用于构建事件驱动的应用,如物联网、智能交通、金融风控等,实现对事件的实时捕获、处理和响应。在复杂事件处理方面,Flink可以高效处理和分析事件聚合、事件关联、事件过滤等场景,提高业务决策的准确性和效率。最后,Flink还可以用于实时报表和可视化任务,如实时监控大屏、实时报表生成等,实现对数据的实时分析和可视化,提高业务决策的及时性和可视化效果。

storm

Storm是一个用于处理和分析实时数据流的开源分布式计算系统。它具有低延迟、高性能、可扩展和高可靠性等特点,可以用于处理各种实时数据流,如社交媒体数据、日志文件、网络流量数据等。

Storm主要由工作进程、线程和任务三个实体组成,可以在集群中并行处理数据流。每个工作进程可以创建多个线程,每个线程可以执行多个任务,从而实现高效的数据处理。

Storm支持多种编程语言,如Java、Clojure和Python等,使得开发人员可以使用自己熟悉的编程语言来编写Storm任务。

除了实时分析外,Storm还可以用于事件处理、数据转换和清洗、机器学习、分布式RPC和连续计算等多种场景。它可以通过流式计算模型对实时数据流进行实时分析和处理,为各种应用场景提供实时决策支持和预测分析。

总的来说,Storm是一个强大而灵活的实时数据处理系统,可以应对各种复杂的实时数据处理场景。

HBase

HBase是一个分布式的、面向列的开源数据库,它源于Fay Chang在Google所撰写的论文"Bigtable:一个结构化数据的分布式存储系统"。HBase在Hadoop之上提供了类似于Bigtable的能力,并作为Apache的Hadoop项目的子项目存在。

HBase有以下主要特点:

  1. 表大:一个表可以拥有数亿行和上百万列。

  2. 无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态增加,同一个表中的不同行可以有截然不同的列。

  3. 面向列存储和权限控制:列族拥有独立索引。

  4. 数据稀疏:空(null)列不占用空间,表可以设计得非常稀疏。

  5. 数据类型单一:HBase中的数据都是字符串,没有类型。

HBase的架构是基于Master/Slave的,并且它隶属于Hadoop生态系统。它由以下类型的节点组成:HMaster节点、HRegionServer节点和ZooKeeper集群。在底层,HBase将数据存储于HDFS中,因此还涉及到HDFS的NameNode和DataNode。

HBase的主要应用场景包括:

  1. 大规模数据存储和管理:适用于存储和管理大规模数据集,如互联网应用中的用户数据、日志数据等。

  2. 实时数据分析和处理:支持实时数据读写操作,适用于需要实时分析和处理数据的场景,如实时监控系统、实时推荐系统等。

  3. 多维数据分析:支持多维数据分析,适用于数据分析和挖掘等场景。

  4. 分布式系统的元数据存储:可以作为分布式系统的元数据存储,用于存储系统配置信息、状态信息等。

  5. 分布式日志存储:适用于存储分布式系统的日志数据,如分布式文件系统日志、数据库事务日志等。

总的来说,HBase是一个适合非结构化数据存储的数据库,特别适用于需要处理大规模、稀疏和动态扩展的数据的场景。

kafka

Kafka是由Apache软件基金会开发的一个开源流处理平台,用Scala和Java编写。它是一个高吞吐量的分布式发布订阅消息系统,能够处理消费者在网站中的所有动作流数据,如网页浏览、搜索和其他用户行动。这些数据在现代网络上对社会功能至关重要,并通常通过处理日志和日志聚合来满足吞吐量的要求。

Kafka的特性和优势包括:

  1. 高吞吐量、低延迟:Kafka每秒可以处理几十万条消息,延迟最低只有几毫秒。

  2. 可扩展性:Kafka集群支持热扩展。

  3. 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份以防止数据丢失。

  4. 容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)。

  5. 高并发:支持数千个客户端同时读写。

Kafka在多种场景下都有广泛应用,如:

  1. 消息队列:Kafka是一个很好的消息系统替代方案,具有强大的扩展性和性能优势。

  2. 网站活动追踪:Kafka可以作为"网站活性跟踪"的最佳工具,将网页/用户操作等信息发送到Kafka中,并进行实时监控或离线统计分析。

  3. 指标:Kafka常用于监测数据,收集分布式应用程序生成的统计数据。

  4. 日志聚合:许多人使用Kafka作为日志聚合解决方案的替代品,处理基于单个主题的实时数据流。

  5. 事件采集:Kafka支持事件采集,这是一种应用程序设计风格,其中状态的变化根据时间的顺序记录下来。

在Kafka的架构中,主要组件包括:

  1. Broker:Kafka集群中的服务器节点,主要负责管理Topic的Partition。

  2. 消费者:Topic中运行的应用程序,负责从该Topic读取消息,并能在指定的Partition上消费并处理这些消息。

  3. Offset:用于标识每个Partition中的消息,它是一个唯一的值,用于表示消息在Partition中的位置。

  4. Partition:Topic的子集,每个Partition相当于一个有序的消息系列,具备独立扩展和复制的能力,从而增强并发和容错性。

  5. Producer:Kafka中的关键组件,主要负责将数据发送到目标Topic的应用程序。

  6. Topic:Kafka数据流中的类别或主题,用于发送数据到或从主题中读取数据。

至于Kafka的部署方式,有以下几种选择:

  1. 单节点部署:在单台服务器上运行Kafka,适用于小规模数据处理和测试环境。

  2. 多节点部署:在多台服务器上运行Kafka,可以提高系统的容错性和性能,适用于生产环境。

  3. 容器化部署:使用容器技术(如Docker)将Kafka部署在容器中,方便部署和管理。

  4. 云端部署:将Kafka部署在云平台上,可以根据需求快速扩展和管理集群。

  5. Kubernetes部署:使用Kubernetes进行Kafka集群管理,实现自动化部署、伸缩和监控。

以上信息仅供参考,如需了解更多关于Kafka的信息,建议咨询专业技术人员或者访问Apache Kafka的官方网站。

ES

Elasticsearch是一个基于Lucene的开源、分布式、RESTful搜索引擎。它设计用于云计算中,能够达到实时搜索、稳定、可靠、快速、安装使用方便等特性。

Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于全文搜索、结构化搜索、分析,以及这三个领域的所有组合。它的分布式特性意味着数据可以在多台机器上被索引和搜索;同时扩展性良好,能够随着数据量的增长而增长。

Elasticsearch提供一套简单一致的RESTful API,这使得Elasticsearch易于使用和集成。它允许用户以JSON格式发送请求和接收响应,这意味着任何可以使用HTTP请求的应用都可以与Elasticsearch进行通信。这使得Elasticsearch可以与各种语言和框架进行集成。

此外,Elasticsearch还提供了丰富的插件生态系统,允许用户扩展其功能以满足特定的需求。这些插件可以用于增强搜索、安全性、监控、数据导入导出等方面。

总的来说,Elasticsearch是一个强大而灵活的搜索引擎,广泛应用于各种需要实时搜索和分析的场景,如日志分析、全文搜索、安全智能、推荐系统等。

实战

安装并配置hadoop

环境准备

Hadoop的模式主要可以分为以下几种:

  1. 独立模式(本地模式):这是Hadoop的默认模式,无需运行任何守护进程,所有程序都在单个JVM上执行。这种模式主要用于对MapReduce程序的逻辑进行调试,确保程序的正确性。

  2. 伪分布式模式:这种模式在单机上运行,使用分布式文件系统,但在单机上启动NameNode、DataNode、secondary NameNode等。这种模式模拟了集群环境,但只有一个节点,因此副本为1。

  3. 完全分布式模式:在这种模式下,Hadoop在多台机器上运行,NameNode、DataNode、secondary NameNode等在不同的机器上启动。这种模式有多个节点,副本不唯一。

  4. HA(High Availability)模式:这是完全分布式模式的一种改进,主要体现在高可用方式上。在这种模式下,有多台NameNode,其中只有一台是对外提供服务的(主),其他的机器只有在主NameNode挂掉后才会承接起对外服务的功能。这种方式提高了Hadoop集群的可用性和稳定性。

以上四种模式是Hadoop中常见的运行模式,根据具体的需求和场景,可以选择适合的模式进行部署和使用。

准备虚拟机

安装ssh并设置免密登录

sudo yum install -y openssh-server

在本地机器上生成SSH密钥对(如果你还没有的话):

ssh-keygen -t rsa

按照提示操作,你可以选择使用密码保护密钥,也可以直接留空。

将你的公钥复制到CentOS服务器上的~/.ssh/authorized_keys文件中:

cat id_rsa.pub >> authorized_keys

尝试免密能否登录

ssh localhost

安装jdk

因为hadoop是java语言编写的,所以安装运行hadoop之前需要在服务器安装jdk并配置java环境变量

sudo mkdir /usr/lib/jvm

#解压

sudo tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/lib/jvm

#配置环境变量

vi ~/.bashrc

在文件的开头位置,添加如下几行内容,这里jdk目录名为 jdk1.8.0_171

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_171

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:{JAVA_HOME}/lib:{JRE_HOME}/lib

export PATH={JAVA_HOME}/bin:PATH

执行命令使环境变量生效

source ~/.bashrc

#验证java

java -version

安装、配置并启动hadoop

安装包目录说明

bin hadoop最基本的管理脚本和使用脚本的目录,这些脚本是sbin目录下管理脚本的基础实现,用户可以直接使用这些脚本管理和使用hadoop

etc hadoop配置文件所在的目录

include 对外提供的编程库头文件(具体动态库和静态库在lib目录中),这些文件均是用c++定义,通常用于c++程序访问HDFS或者编写MapReduce程序。

lib 该目录包含了hadoop对外提供的编程动态库和静态库,与include目录中的头文件结合使用。

libexec 各个服务队用的shell配置文件所在的免疫力,可用于配置日志输出,启动参数(比如JVM参数)等基本信息。

sbin hadoop管理脚本所在的目录,主要包含HDFS和YARN中各类服务的启动、关闭脚本。

share hadoop 各个模块编译后的jar包所在的目录。官方示例也在其中

解压Hadoop压缩文件到usr/local

sudo tar -zxvf hadoop-3.2.2.tar.gz -C /usr/local

给hadoop-3.2.2文件改名为hadoop

sudo mv hadoop-3.2.2 hadoop

修改文件权限

sudo chown -R hadoop ./hadoop

cd hadoop

查看hadoop版本,验证是否安装成功

bin/hadoop version

配置环境变量

vi ~/.bashrc

export HADOOP_HOME=/usr/local/hadoop/

export PATH=HADOOP_HOME/bin:HADOOP_HOME/sbin:$PATH

classpath相关环境变量配置

export PATH=PATH:HADOOP_HOME/bin:$HADOOP_HOME/sbin

export HADOOP_CLASSPATH=.:$HADOOP_HOME/bin/hadoop classpath

加载

$ source ~/.bashrc

添加hadoop环境变量,不然启动会报错

这个错误提示表明你正在尝试以 root 用户身份操作 HDFS 的 Namenode,但是没有定义 HDFS_NAMENODE_USER 环境变量

export HDFS_NAMENODE_USER=root

export HDFS_DATANODE_USER=root

export HDFS_JOURNALNODE_USER=root

export HDFS_SECONDARYNAMENODE_USER=root

export YARN_RESOURCEMANAGER_USER=root

export YARN_NODEMANAGER_USER=root

Hadoop伪分布模式的搭建

配置免密登录

  1. 本机生成公钥、私钥和验证文件,输入以下命令之后一直回车即可
ssh-keygen -t rsa
  1. 将登录信息复制到验证文件,master为主机名
ssh-copy-id master

HDFS的配置

  1. 进入Hadoop主目录
cd /opt/hadoop-3.3.6
  1. 配置hadoop-env.sh
vi etc/hadoop/hadoop-env.sh

在文件第25行去掉注释符,添加java路径:

export JAVA_HOME=/usr/java/default
  1. 配置core-site.xml
vi etc/hadoop/core-site.xml

配置如下:

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://master:9000</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/opt/hadoopTmp/tmp</value>

</property>

</configuration>

  1. 配置hdfs-site.xml

vi etc/hadoop/hdfs-site.xml

配置如下:

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</configuration>

  1. 格式化HDFS
hdfs namenode -format

看到"Storage directory /opt/hadoopTmp/tmp/dfs/name has been successfully formatted.",即格式化成功。

注意:以后修改配置文件重新格式化时,都要先删除tmp文件和logs文件

|--------------------------------|
| rm -rf /opt/hadoopTmp/ |
| rm -rf /opt/hadoop-3.3.6/logs/ |

  1. 正常来说,会生成current目录

YARN的配置

  1. 进入Hadoop主目录
cd /opt/hadoop-3.3.6
  1. 配置yarn-site.xml
vi etc/hadoop/yarn-site.xml

配置如下:

<configuration>

<property>

<name>yarn.resourcemanager.hostsname</name>

<value>master</value>

</property>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

</configuration>

日志聚合配置(可以在webui查看任务执行logs):

<property>

<name>yarn.log-aggregation-enable</name>

<value>true</value>

</property>

<property>

<name>yarn.log-aggregation.retain-seconds</name>

<value>640800</value>

</property>

  1. 配置mapred-site.xml
vi etc/hadoop/mapred-site.xml

配置如下:

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

启动Hadoop

  1. 使用如下命令,同时启动或停止HDFS和YARN

|--------------|
| start-all.sh |
| stop-all.sh |

2.使用如下命令查看结果

jps

当NameNode、SecondaryNameNode、DataNode、Jps、ResourceManager、NodeManager全部显示出来时,说明伪分布式安装成功

  1. 访问Web端

(1)注意每次访问之前记得关闭防火墙

systemctl stop firewalld.service

(2)访问HDFS,Hadoop2的端口号是50070,Hadoop3的端口号是9870

http://192.168.10.8:9870

访问YARN

http://192.168.10.8:8088

启动hdfs

$ start-dfs.sh

$ stop-dfs.sh #这里不执行

http://192.168.10.8:9870

YARN集群启停

$ start-yarn.sh

$ stop-yarn.sh # 这里不执行# 查看java进程

$ jps

http://192.168.10.8:8088

Hadoop集群启停(HDFS+YARN)

$ start-all.sh

$ stop-all.sh

关防火墙 不然访问不了

systemctl stop firewalld.service

使用hadoop完成单词统计任务

hdfs存入文件

#创建需要统计单词计数的测试文件

vi words.txt

输入任意词语

esc + :wq 保存退出

#hdfs中创建准备用于存放输入输出的文件夹

root@helloxf-pc hadoop\]# hadoop fs -mkdir -p /input \[root@helloxf-pc hadoop\]# hadoop fs -mkdir -p /output **#查看创建的文件夹** \[root@helloxf-pc hadoop\]# hadoop fs -ls / Found 3 items drwxr-xr-x - root supergroup 0 2024-05-05 10:22 /data drwxr-xr-x - root supergroup 0 2024-05-05 10:22 /input drwxr-xr-x - root supergroup 0 2024-05-05 10:23 /output #将文件存入hdfs hadoop fs -put words.txt /input/ #查看结果 hadoop fs -ls /input #### 提交MapReduce任务 hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jar wordcount hdfs://master:9000/input hdfs://master:9000/output/wc 查看yarn地址发现多了任务 ![](https://file.jishuzhan.net/article/1788439124269600770/a6b81c2a2d7d114a05e231d920b0f995.webp) 发现报错了:Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster 解决方法: #查看hadoop的classpath hadoop classpath 修改yarn-site.xml文件 找到yarn-site.xml和mapred-site.xml,并在configuration标签中,添加如下代码(value替换成自己的hadoop classpath路径): \ \yarn.application.classpath\ \/usr/local/hadoop/etc/hadoop:/usr/local/hadoop/share/hadoop/common/lib/\*:/usr/local/hadoop/share/hadoop/common/\*:/usr/local/hadoop/share/hadoop/hdfs:/usr/local/hadoop/share/hadoop/hdfs/lib/\*:/usr/local/hadoop/share/hadoop/hdfs/\*:/usr/local/hadoop/share/hadoop/mapreduce/lib/\*:/usr/local/hadoop/share/hadoop/mapreduce/\*:/usr/local/hadoop/share/hadoop/yarn:/usr/local/hadoop/share/hadoop/yarn/lib/\*:/usr/local/hadoop/share/hadoop/yarn/\*:.:/usr/local/hadoop/bin/hadoop\ \ 再次执行: hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jar wordcount hdfs://master:9000/input hdfs://master:9000/output/wc 日志如下: ![](https://file.jishuzhan.net/article/1788439124269600770/95433c0fbbf8daa9fad8997ed0ed552b.webp) #查看结果 hadoop fs -cat /output/wc/part-r-00000 ![](https://file.jishuzhan.net/article/1788439124269600770/b17ce9d658feb49c8fa88cb9875a6103.webp) ## HIVE实战 #### 基本概念 Apache Hive其2大主要组件就是:SQL解析器以及元数据存储,如下图。 ![](https://file.jishuzhan.net/article/1788439124269600770/04d59a49be0541788409d55793cf24bd.webp) 架构图 ![](https://file.jishuzhan.net/article/1788439124269600770/f3f0cbfa10c9d01f5dded8e65ec2b282.webp) #### 安装HIVE 下载拷贝安装包到服务器 ![](https://file.jishuzhan.net/article/1788439124269600770/6593cdfefdea1841f4b16c6391fb2e0f.webp) 修改 hadoop 集群的 core-site.xml 配置文件 加入两条配置信息:表示设置 hadoop 的代理用户 配置解析: hadoop.proxyuser.hadoop.hosts 配置成\*的意义,表示任意节点使用 hadoop 集群的代理用户 hadoop 都能访问 hdfs 集群,hadoop.proxyuser.hadoop.groups 表示代理用户的组所属 以上操作做好了之后(最好重启一下HDFS集群) \ \hadoop.proxyuser.hadoop.hosts\ \\*\ \ \ \hadoop.proxyuser.hadoop.groups\ \\*\ \ #解压hive mkdir /export mkdir /export/server/ tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /export/server/ #设置软连接 ln -s /export/server/apache-hive-3.1.3-bin /export/server/hive #移入mysql驱动包 mv mysql-connector-java-5.1.42.jar /export/server/hive/lib/ #修改hive配置 在Hive的conf目录内,新建hive-env.sh文件,填入以下环境变量内容 export HADOOP_HOME=/usr/local/hadoop/ export HIVE_CONF_DIR=/export/server/hive/conf export HIVE_AUX_JARS_PATH=/export/server/hive/lib #进入hive的conf目录,修改以下文件名 mv hive-env.sh.template hive-env.sh #准备hive-site.xml配置文件 vi hive-site.xml \ \ \javax.jdo.option.ConnectionDriverName\ \

相关推荐
珹洺1 小时前
Java-servlet(完结篇)过滤器乱码解决与监听器
java·运维·服务器·hive·servlet·jsp
简单的心17 小时前
window部署虚拟机VirtualBox来部署flink
大数据·windows·flink
碳基学AI8 小时前
北京大学DeepSeek内部研讨系列:AI在新媒体运营中的应用与挑战|122页PPT下载方法
大数据·人工智能·python·算法·ai·新媒体运营·产品运营
viperrrrrrrrrr78 小时前
大数据学习(105)-Hbase
大数据·学习·hbase
SeaTunnel9 小时前
【同步教程】基于Apache SeaTunnel从MySQL同步到MySQL——Demo方舟计划
大数据·人工智能·apache·etl
老友@11 小时前
Elasticsearch 全面解析
大数据·elasticsearch·搜索引擎
Gvemis⁹12 小时前
Spark Core(二)
大数据·分布式·spark
AWS官方合作商13 小时前
AWS Bedrock:开启企业级生成式AI的钥匙【深度解析】
大数据·人工智能·aws
Flink_China13 小时前
Lalamove基于Flink实时湖仓演进之路
大数据·flink