Hadoop环境搭建(ubuntu+hadoop2.7 - 伪分布式)

2024-01-15 11:18

本文主要是介绍Hadoop环境搭建(ubuntu+hadoop2.7 - 伪分布式),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Hadoop简介

在进行环境搭建之前,先简要回顾一下Hadoop的基本知识。

Hadoop背景

Hadoop是面向集群的分布式并行计算框架(cluster、distributed、parallel),其核心组成是HDFS分布式文件系统和MapReduce并行编程模型。在开发者的业务背景下(如数据分析项目),Hadoop可被视为一套工具,它解决了并行计算中的种种复杂问题(如分布式存储,任务调度,负载均衡,容错机制…),让我们能够绕开底层细节,专注于业务自身的实现。

Hadoop主要经历了Hadoop1和Hadoop2两个时代,Hadoop2在Hadoop1的HDFS+MapReduce的基础上,引入了YARN资源管理系统,hadoop核心区别如下图示:

这里写图片描述

Hadoop的快速发展与大数据、云计算等新兴领域的崛起相辅相成,围绕Hadoop形成的生态系统现已十分庞大,相关内容按下不表。

基本原理回顾

这里简要回顾一下Hadoop的基本工作机制,包括HDFS和MapReduce两部分。

  1. HDFS

    HDFS(Hadoop-分布式文件系统)遵循主从架构(Master-Slave)模式。一个主节点NameNode,负责整个文件系统命名空间(NameSpace)的管理与维护,同时面向客户端(HDFS Client)提供文件读写等操作控制;多个从节点DataNode则构成文件实际的存储集群。此外HDFS为提升系统生存弹性而精心设计了副本机制(Replication)。其它需明确的HDFS术语包括:块(Block)、通信包(Packet)、源数据(MetaData)、Secndary NameNode冷备份等等。

    HDFS的架构示意图如下所示:

    这里写图片描述

    文件系统最基本的任务是读/写,对于HDFS为用户(Client)提供了完备的读写接口。基本的模式是通过访问NameNode的命名空间映射信息,建立起Client与DataNode File之间的读写通道,生成流对象来进行读写操作。下图是读写文件示意图:

    这里写图片描述
    这里写图片描述

  2. MapReduce

    MapReduce是Hadoop实现并行计算的基础(称之为模型、框架、平台…),首先回顾一下Hadoop-MapReduce的运行,主要有以下内容:

    • 用户端Client提交所要进行的MapReduce Job;
    • ResourceManager进行资源调配设置,NodeManager加载与监控容器;
    • ApplicationMaster向ResourceManager申请资源并交互状态;
    • NodeManager管理MapReduce运行时的Job;
    • 基于HDFS的Job配置,jar包的分发;

    下图所示是Hadoop2下基于YARN的MapReduce过程示意图:

    这里写图片描述

    重点地,MapReduce运行的核心是Map和Reduce,一个完整MapReduce程序执行主要经历:输入分片(input split)、映射(map)、结合(combiner)、洗牌(shuffle)、化简(reduce)几个阶段,详情按下不表。

Hadoop环境搭建

准备工作

本文Hadoop安装的一些准备信息(不限于此):

  • 系统环境:Ubuntu 16.04 64bit.
  • Java环境:系统自带Java8(JDK-1.8).
  • Hadoop版本:Apache Hadoop 2.7.3.

安装过程

整个安装过程详情可参考:

  • Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04
  • 官方教程 - Hadoop: Setting up a Single Node Cluster.
java、ssh

安装Hadoop首先要配置好java环境ssh登录支持,建议jdk1.7及以上版本java和免密码登录的ssh。java要配置好环境变量,ubuntu16.04自带ssh,可直接运行。

为了方便hadoop节点构建(包括权限冲突的规避),新建一个名为hadoop的新用户,执行下列命令即可:

sudo useradd -m hadoop -s /bin/bash  # 新建用户名为hadoop采用bash为shell
sudo passwd hadoop  # 设置新用户密码
sudo adduser hadoop sudo  # 为其添加root权限接入

于是我们可以进入hadoop用户继续环境搭建操作。

hadoop安装文件获取

可以直接从各路镜像网站(如华科开源镜像站的/apache/hadoop/common/)下载hadoop安装文件或带编译源文件(如hadoop-2.7.3.tar.gz)。由于文件的来源可能不稳定规范,为了验证文件数据完整性,还需要从Apache - 官方镜像的/hadoop/common/hadoop-2.7.3路径下下载.asc或.mds文件,这里我们选择hadoop-2.7.3.tar.gz.mds进行MD5 hash的验证。

下载好文件后,执行命令:

cat hadoop-2.7.3.tar.gz.mds | grep 'MD5' # 列出md5检验值
md5sum hadoop-2.7.3.tar.gz | tr "a-z" "A-Z" # 获取hadoop主文件md5检验值。

比较二者结果是否相同即可以判断文件是否完整,如下认证示意:

这里写图片描述

验证通过后,可直接解压到目标文件夹,并为hadoop用户配置读写权限,示意命令如下:

sudo tar -zxf hadoop-2.7.3.tar.gz -C /usr/local  # 这里解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.7.3/ ./hadoop  # 重命名方便后续使用
sudo chown -R hadoop ./hadoop  # 修改hadoop用户对该文件夹的权限

同时加入环境变量(可修改环境变量配置文件如~/.bashrc):

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
单机模式

Hadoop默认为单机模式,所谓单机模式(Standalone),即是Hadoop本地运行,无节点间的交互,也无需HDFS的操作,一般用于测试MapReduce逻辑。为了更好的学习Hadoop,我们跳过该模式。

伪分布式模式

所谓伪分布式,是在单机条件下模拟分布式集群运行环境,它包括各种Java进程对不同Hadoop节点任务的模拟(如NameNode、DataNode和SourceManager、NodeManager等),以及和HDFS的交互。

这里的配置过程主要是hadoop文件目录下./etc/hadoop/中相关.xml文件中修改 configuration*片段的修改,给出如下(详细说明见参考):

基本配置:

  • core-site.xml

    <configuration><property><name>hadoop.tmp.dir</name><value>file:/usr/local/hadoop/tmp</value><description>Abase for other temporary directories.</description></property><property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property>
    </configuration>
    
  • hdfs-site.xml

    <configuration><property><name>dfs.replication</name><value>1</value></property><property><name>dfs.namenode.name.dir</name><value>file:/usr/local/hadoop/tmp/dfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>file:/usr/local/hadoop/tmp/dfs/data</value></property>
    </configuration>
    

YARN配置:

  • mapred-site.xml

    先是重命名:

    mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml   
    

    然后修改 configuration 片段:

    <configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property>
    </configuration>
    
  • yarn-site.xml

    <configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
    </configuration>
    

格式化NameNode,终端命令:

./bin/hdfs namenode -format

注意,这一步的结果应如下所示(注意画线处):

这里写图片描述

接着生成HDFS文件系统:

./bin/hdfs dfs -mkdir -p /user/hadoop  # 这里hadoop是用户名
./bin/hdfs dfs -mkdir input
./bin/hdfs dfs -put ./etc/hadoop/*.xml input

环境测试

经过上述配置过程之后,可通过./bin/hdfs dfs -ls input命令查看所生成的HDFS文件列表,通过./sbin/start-dfs.sh启动守护进程NameNodeDataNode,通过./sbin/start-yarn.sh启动守护进程ResourceManagerNodeManager(对应的停止命令将start改为stop),通过jps命令可查看当前hadoop进程如下图示:

这里写图片描述

停止YARN脚本的命令是:

./sbin/stop-yarn.sh
./sbin/mr-jobhistory-daemon.sh stop historyserver

Hadoop运行中,可通过 http://localhost:50070 查看NameNode、Datanode等节点信息,通过 http://localhost:8088/cluster 查看YARN上任务状态。

本文小结

搭建Hadoop环境为分布式并行任务开发创造了条件,接下来的工作将围绕基于Hadoop框架的数据挖掘研究展开。

参考

列出与本文内容紧密相关的参考源如下:

  • 官网:Apache Hadoop 2.7.3
  • 官网:Hadoop: Setting up a Single Node Cluster、
  • 博客教程:Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04
  • 博客教程:hadoop 2.7.1安装和配置
  • 学习资料:Hadoop学习资源集合

这篇关于Hadoop环境搭建(ubuntu+hadoop2.7 - 伪分布式)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/608703

相关文章

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满

如何在Ubuntu 24.04上部署Zabbix 7.0对服务器进行监控

《如何在Ubuntu24.04上部署Zabbix7.0对服务器进行监控》在Ubuntu24.04上部署Zabbix7.0监控阿里云ECS服务器,需配置MariaDB数据库、开放10050/1005... 目录软硬件信息部署步骤步骤 1:安装并配置mariadb步骤 2:安装Zabbix 7.0 Server

Ubuntu如何分配​​未使用的空间

《Ubuntu如何分配​​未使用的空间》Ubuntu磁盘空间不足,实际未分配空间8.2G因LVM卷组名称格式差异(双破折号误写)导致无法扩展,确认正确卷组名后,使用lvextend和resize2fs... 目录1:原因2:操作3:报错5:解决问题:确认卷组名称​6:再次操作7:验证扩展是否成功8:问题已解

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

如何使用Haporxy搭建Web群集

《如何使用Haporxy搭建Web群集》Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多如LVS和Nginx,本案例介绍使用Haproxy及Nginx搭建一套Web群集,感兴趣的... 目录一、案例分析1.案例概述2.案例前置知识点2.1 HTTP请求2.2 负载均衡常用调度算法 2.

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热