当前位置:   article > 正文

大数据技术Hadoop小白教程(一)——Hadoop概述及环境配置_小白自学hadoop

小白自学hadoop

1.1 Hadoop概述

1.1.1 Hadoop简介

Hadoop是一个开源的分布式计算框架,用于处理大规模数据集的存储和分析。它基于Google的MapReduce和Google文件系统(GFS)的概念,并且能够在廉价的硬件上运行。Hadoop的核心组件包括Hadoop分布式文件系统(HDFS)和Hadoop YARN(Yet Another Resource Negotiator)。

HDFS是Hadoop的分布式文件系统,它能够将大规模数据集分布式存储在多个节点上,并提供高容错性和高可靠性。HDFS将数据切分成多个块,并将这些块复制到不同的节点上,以实现数据的冗余备份和容错性。

Hadoop YARN是Hadoop的资源管理系统,它负责集群中的资源调度和任务管理。YARN将集群的计算资源划分为多个容器,每个容器可以运行一个或多个任务。这种灵活的资源管理方式使得Hadoop可以同时运行多个不同类型的计算任务,如MapReduce、Spark、Hive等。

1.1.2 Hadoop的发展:

Hadoop是一个开源的分布式计算框架,最初由Apache软件基金会开发。它的发展可以追溯到2005年,当时由Doug Cutting和Mike Cafarella开发的Nutch搜索引擎项目需要处理大规模数据,而传统的关系型数据库无法满足需求。为了解决这个问题,他们创建了Hadoop作为一种可扩展的分布式计算解决方案。随后,Hadoop成为Apache软件基金会的顶级项目,并得到了全球范围内的广泛应用和发展。

1.1.3 Hadoop的特点:

Hadoop具有以下几个主要特点:
1. 可扩展性:Hadoop可以在集群中添加更多的计算节点,以处理大规模数据和高并发的计算任务。
2. 容错性:Hadoop通过数据冗余和自动故障恢复机制来保证数据的可靠性和系统的稳定性。
3. 高性能:Hadoop采用并行计算的方式,能够高效地处理大规模数据,并且具有良好的数据局部性。
4. 成本效益:Hadoop是基于廉价硬件构建的,相对于传统的大型服务器集群,具有更低的成本。

1.1.4 Hadoop的版本和应用现状:

Hadoop的当前版本是Apache Hadoop 3.x系列,其中包括Hadoop Common、HDFS、YARN和MapReduce等组件。Hadoop已经成为大数据处理的事实标准,被广泛应用于各个行业和领域。许多大型互联网公司和企业都在使用Hadoop来处理和分析海量数据,例如Facebook、亚马逊和谷歌等。此外,Hadoop还被用于科学研究、金融分析、日志处理等领域。

1.2 Hadoop生态系统简述

Hadoop生态系统是一个由Apache基金会维护的开源软件框架,用于存储、管理和分析大规模数据集。以下是对Hadoop生态系统中一些重要组件的简要描述:

Hadoop生态系统

1.2.1 HDFS(Hadoop分布式文件系统):

HDFS是Hadoop的核心组件之一,用于存储大规模数据集,并提供了高容错性和高可靠性。它将数据分布式存储在多台服务器上,并通过块(block)的方式进行管理。HDFS采用主从架构,包括一个主节点(NameNode)和多个从节点(DataNode)。NameNode负责管理文件系统的命名空间和访问控制,而DataNode负责实际的数据存储和处理。

1.2.2 HBase:

HBase是一个基于Hadoop的分布式、可扩展的非关系型数据库,类似于Google的Bigtable。它提供了高性能的随机读/写访问,并且能够处理海量的结构化数据。HBase适合于需要快速随机访问数据的应用场景,如实时分析、日志处理等。

1.2.3 MapReduce:

MapReduce是Hadoop的编程模型和计算框架,用于并行处理大规模数据集。MapReduce将任务分解为Map(映射)和Reduce(归约)两个阶段,通过分布式计算的方式实现数据的处理和计算。MapReduce可以有效地处理大规模数据集的计算问题,并提供了容错性和可伸缩性。

1.2.4 Hive:

Hive是建立在Hadoop之上的数据仓库基础设施,提供了类似于SQL的查询语言HiveQL,使用户可以通过SQL查询来分析存储在Hadoop中的数据。Hive将用户提交的查询转换为MapReduce任务,并在Hadoop集群上执行,从而实现了数据的交互式查询和分析。

1.2.5 Pig:

Pig是一个用于大规模数据处理和分析的平台,它使用Pig Latin语言来描述数据流的操作和处理过程。Pig将Pig Latin脚本转换为MapReduce任务,并在Hadoop集群上运行,用于实现复杂的数据处理和分析任务。

1.2.6 Mahout:

Mahout是一个用于构建可扩展机器学习算法的库,可以与Hadoop集成以实现大规模数据的机器学习任务。Mahout包含了各种常见的机器学习算法实现,如聚类、分类、推荐等,可以帮助用户进行大规模数据的分析和挖掘。

1.2.7 Zookeeper:

Zookeeper是一个用于分布式协调和管理的服务,用于管理Hadoop集群中的各种服务和节点。Zookeeper提供了可靠的分布式协调机制,用于实现分布式系统中的一致性和同步操作。

1.2.8 Flume:

Flume是一个用于数据采集、聚合和移动的分布式系统,用于将数据从不同的源头传输到Hadoop生态系统中。Flume支持多种数据源和目的地,可以实现实时数据流的收集和处理。

1.2.9 Sqoop:

Sqoop是一个用于在Hadoop和关系型数据库之间进行数据传输的工具,支持数据的导入和导出。Sqoop可以帮助用户将关系型数据库中的数据导入到Hadoop中进行分析,或将处理结果导出到其他系统中使用。

1.2.10 Ambari:

Ambari是一个用于Hadoop集群管理和监控的工具,提供了集群配置、管理和监控的功能。通过Ambari,用户可以轻松地管理Hadoop集群的各个组件,监控集群的运行状态,并进行故障诊断和调优操作。

以上简单介绍了Hadoop的主要组件,后续章节将展开介绍其作用与应用。

1.3 Hadoop 的安装与使用

1.31 Hadoop的三种安装方式

Hadoop的安装方式主要有三种模式:单机模式、伪分布式模式和分布式模式。

1. 单机模式:在单机模式下,Hadoop以默认的非分布式模式(本地模式)来运行。在这种模式下,Hadoop作为单个Java进程运行,无需进行额外配置即可启动。这种模式适合用于开发和调试,因为所有的Hadoop组件都在同一台机器上运行。

2. 伪分布式模式:在伪分布式模式下,Hadoop可以在单个节点上以伪分布式方式运行。在这种模式下,Hadoop进程以各自独立的Java进程来运行,该节点既充当NameNode又充当DataNode,同时可以读取HDFS中的文件。虽然仍然在单个节点上运行,但是模拟了一个真实的分布式环境,适合用于测试和学习Hadoop集群的搭建和运行。

3. 分布式模式:在分布式模式下,Hadoop使用多个节点构成一个集群环境来运行。在这种模式下,Hadoop集群包含多个节点,每个节点都承担着不同的角色,如NameNode、DataNode、ResourceManager等。数据存储和处理分布在整个集群中,提供了横向扩展性和高可用性,适合用于生产环境中处理大规模数据。

这三种安装方式可以根据实际需求选择,单机模式适合用于开发和测试,伪分布式模式适合学习和小规模数据处理,而分布式模式则适合处理大规模数据和构建生产级的大数据处理系统。

1.32 安装Linux系统

Hadoop官方真正支持的操作系统只有Linux,对于使用window系统的用户,通常采用在window系统中安装Linux虚拟机的方式完成实验。这里我们选择的 Ubuntu 22.04.4 64位 作为系统环境,安装教程在我主页文章Linux系统(Ubuntu)——虚拟机VMware17的安装教程-CSDN博客中已详细介绍,这里不再复述。装好了 Ubuntu 系统之后,进行下一步。

1.33创建hadoop用户

如果你安装 Ubuntu 的时候不是用的 "hadoop" 用户,为了保证系统的安全性、隔离性和管理便利性,安装Hadoop时最好使用一个专门的"hadoop"用户来管理Hadoop相关的服务和进程。

首先,打开虚拟机,这里我已经将其命名为Hadoop虚拟机,点击播放虚拟机,进入Ubuntu操作系统界面。

按 ctrl+alt+t 打开终端窗口,输入如下命令创建新用户 :

sudo useradd -m hadoop -s /bin/bash

如果设置了用户密码需输入密码,这里密码输入位数不显示的,输入完成回车就可以了

这条命令创建了可以登陆的 hadoop 用户,并使用 /bin/bash 作为 shell。

sudo命令: 本文中会大量使用到sudo命令。sudo是ubuntu中一种权限管理机制,管理员可以授权给一些普通用户去执行一些需要root权限执行的操作。当使用sudo命令时,就需要输入您当前用户的密码.

密码:在Linux的终端中输入密码,终端是不会显示任何你当前输入的密码,也不会提示你已经输入了多少字符密码。而在windows系统中,输入密码一般都会以“*”表示你输入的密码字符

输入法中英文切换: ubuntu中终端输入的命令一般都是使用英文输入。linux中英文的切换方式是使用键盘“shift”键来切换,也可以点击顶部菜单的输入法按钮进行切换。ubuntu自带的Sunpinyin中文输入法已经足够读者使用。

Ubuntu终端复制粘贴快捷键: 在Ubuntu终端窗口中,复制粘贴的快捷键需要加上 shift,即粘贴是 ctrl+shift+v。

接着使用如下命令设置密码,可简单设置为 hadoop,按提示输入两次密码:

sudo passwd hadoop

可为 hadoop 用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题:

sudo adduser hadoop sudo

最后注销当前用户(点击屏幕右上角的齿轮,选择注销),返回登陆界面。在登陆界面中选择刚创建的 hadoop 用户进行登陆。

1.34 更新apt(管理软件包的工具)

用 hadoop 用户登录后,我们先更新一下 apt,后续我们使用 apt 安装软件,如果没更新可能有一些软件安装不了。按 ctrl+alt+t 打开终端窗口,执行如下命令:sudo apt-get update

这里就更新好了

后续需要更改一些配置文件,我比较喜欢用的是 vim(vi增强版,基本用法相同),建议安装一下(如果你实在还不会用 vi/vim 的,请将后面用到 vim 的地方改为 gedit,这样可以使用文本编辑器进行修改,并且每次文件更改完成后请关闭整个 gedit 程序,否则会占用终端)输入下面代码:

sudo apt-get install vim

出现让你确认的地方[y/n],输入y就行

vim的常用模式可以分为命令模式、插入模式、可视模式和正常模式。在本教程中,我们只需要使用正常模式和插入模式,它们之间的切换可以帮助您完成学习指南的任务。

正常模式(Normal Mode)主要用于浏览文本内容。当您打开vim时,默认进入正常模式。您可以在任何模式下按下Esc键返回到正常模式。

插入编辑模式(Insert Mode)用于向文本中添加内容。在正常模式下,按下i键即可进入插入编辑模式,此时您可以直接输入文本。

退出vim时,请记得保存对文本所做的任何修改。在正常模式下,按下Esc键返回到正常模式,然后输入:wq即可保存文本并退出vim。

请注意,这只是一个简单的介绍,vim具有许多其他功能和模式,但对于本教程,了解正常模式和插入模式就足够了。

1.35安装SSH、配置SSH登陆

在集群和单节点模式下,您都需要使用SSH登录来远程连接到Linux主机并执行命令。在Ubuntu上,默认已安装了SSH客户端,但还需要安装SSH服务器。

以下是安装SSH服务器的步骤:

输入:sudo apt-get install openssh-server

遇到确认就y,稍等几秒安装好了如图:

安装后,可以使用如下命令登陆本机:

ssh localhost

此时会有如下提示(SSH首次登陆提示),输入 yes 。然后按提示输入密码 hadoop,这样就登陆到本机了。

最后输入exit 注销并关闭了与本地主机的连接。

1.36 在Linux系统里安装Java

Hadoop3.1.3需要JDK版本在1.8及以上。需要按照下面步骤来自己手动安装JDK1.8。

打开Linux的浏览器,左上红色的那个,打开官网地址Java Downloads | Oracle

往下翻,找到Java8中 x64.tar.gz 结尾的文件,图中右下角,点击下载

打开文件夹,在Downloads目录下看到下载的文件

然后打开终端,在Linux命令行界面中,执行如下Shell命令(注意:当前登录用户名是hadoop):

cd /usr/lib
sudo mkdir jvn #创建/usr/lib/jvn目录用来存放JDK文件
cd ~ #进入hadoop用户的主目录
cd Downloads  #注意区分大小写字母,刚才已经通过把JDK安装包jdk-8u162-linux-x64.tar.gz下载到该目录下
sudo tar -zxvf ./jdk-8u401-linux-x64.tar.gz -C /usr/lib/jvn  #把JDK文件解压到/usr/lib/jvn目录下,根据你下载的文件名来修改加粗部分。

执行以下命令,查看解压情况:

cd /usr/lib/jvm
ls

目录里出现了jdk的信息,解压成功

下面继续执行如下命令,设置环境变量:

cd ~
vim ~/.bashrc

此时我们进入了vim中,按i键,会进入编辑模式,底部出现insert。然后用方向键移动到最底部,将以下环境代码输入,根据jdk的地址在下面代码中对应位置修改即可。

export JAVA_HOME=/usr/lib/jvn/jdk1.8.0_401
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

然后点击键盘的esc键,退出编辑模式,此时底部insert消失,然后输入  :wq 保存.bashrc文件并退出vim编辑器。然后,继续执行如下命令让.bashrc文件的配置立即生效:

source ~/.bashrc

这时,可以使用如下命令查看是否安装成功:

java -version

出现以上信息说明jdk安装完毕,至此,就成功安装了Java环境。下面就可以进入Hadoop的安装。

1.37 安装 Hadoop3.1.3

在此之前,我将Ubuntu系统语言设置为中文,以便后续方便使用,读者可以通过我的这篇博客https://mp.csdn.net/mp_blog/creation/editor/136708334安装中文包。

下面正式开启安装,首先,进入百度网盘后,找到hadoop-3.1.3.tar.gz文件,下载到本地。

http://链接:https://pan.baidu.com/s/1-8i7CHf1POstLOdcqKYdHg 提取码:long

我们选择将 Hadoop 安装至 /usr/local/ 中,打开终端输入命令:

sudo tar -zxf ~/下载/hadoop-3.1.3.tar.gz -C /usr/local    # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-3.1.3/ ./hadoop            # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop       # 修改文件权限

输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:

cd /usr/local/hadoop
./bin/hadoop version

1.38 Hadoop单机配置

Hadoop 默认模式为本地模式,无需进行其他配置即可运行。即单 Java 进程,方便进行调试。

Hadoop 附带了丰富的例子(运行 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar 可以看到所有例子),包括 wordcount、terasort、join、grep 等。下面展示如何运行 grep 例子筛选单词并统计出现次数:

# 创建输入文件夹input,并在其中添加测试文件
mkdir input
echo "dfsabc dfsefg dfsxyz dfs123" > input/file1.txt
echo "dfsabc dfsxyz dfs456" > input/file2.txt

# 运行 grep 例子,使用正则表达式dfs[a-z.]+进行匹配
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output 'dfs[a-z.]+'

# 查看输出文件
cat output/*


在上述代码中,首先创建了一个输入文件夹 input,并在里面添加了两个测试文件。然后通过运行 hadoop jar 命令来执行 grep 例子,指定输入路径为 input,输出路径为 output,以及使用正则表达式 'dfs[a-z.]+' 进行匹配。最后,通过 cat 命令查看输出文件中的内容。

输出的结果是符合正则的单词及次数。

在运行 Hadoop 任务时,如果输出路径已经存在结果文件,再次运行同样的任务会导致错误。因此,在重新运行之前,需要先删除输出路径中的结果文件,代码如下:
rm -r ./output

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/501016
推荐阅读
相关标签
  

闽ICP备14008679号