2分钟

课程背景

实验预计耗时:60分钟

1. 课程背景

1.1 课程目的

本课程将会通过自建Hadoop集群对《水浒传》进行简单的WordCount词频统计,从而得到《水浒传》中出现频率最高的人名。这是一个非常基础的Hadoop项目,特别适合Hadoop的入门。

由于自建Hadoop集群过于繁琐且容易出错,本实验还将使用弹性MapReduce集群提供的Hadoop环境,完成同样的词频统计任务,从而对比两种方式的差异。

弹性MapReduce(EMR)是腾讯云提供的云上Hadoop托管服务,提供了便捷的Hadoop集群部署、软件安装、配置修改、监控告警、弹性伸缩等功能,为企业及用户提供安全稳定的大数据处理解决方案。

使用弹性MapReduce只需几分钟即可获得一个安全可靠的Hadoop集群,在无需使用时可以即刻销毁,能够大幅度降低Hadoop集群的配置成本,所以更加推荐使用第二种方式完成实验。

通过本课程,学员将掌握使用弹性MapReduce搭建Hadoop集群的方法,Hadoop Streaming的使用和Python中jieba模块的使用。

1.2 课前知识准备

(1)相关技术及产品:

  • 腾讯云相关:
    • 云服务器CVM:腾讯云服务器 CVM(Cloud Virtual Machine)是腾讯云提供的可扩展的计算服务。使用 CVM 避免了使用传统服务器时需要预估资源用量及前期投入,帮助您在短时间内快速启动任意数量的云服务器并即时部署应用程序。腾讯云 CVM 支持用户自定义一切资源:CPU、内存、硬盘、网络、安全等等,并可以在需求发生变化时轻松地调整它们。
    • 弹性MapReduce:弹性MapReduce在云上提供了弹性的大数据Hadoop托管服务,您可以将自建的Hadoop集群平滑的迁移至云上,并享受到云上弹性能力带来的资源利用率提升的便利。您也可以借助弹性MapReduce将传统的大数据集群模式升级成为计算存储分离的大数据集群,利用云端提供的高持久的对象存储进行数据存储,利用托管的Hadoop框架对对象存储中的数据进行按需计算。
  • Linux相关:
    • Linux:Linux是一套开源的类Unix操作系统,也是现在在服务端使用最为广泛的操作系统,它有多种发行版本。
    • CentOS:CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定放出的源代码编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS完全开源。
  • Hadoop相关:
    • Hadoop:Apache Hadoop软件库是一个框架,该框架允许使用简单的编程模型跨计算机集群对大型数据集进行分布式处理。它旨在从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。
    • HDFS:Hadoop分布式文件系统(HDFS)是一种在商品硬件上运行的分布式文件系统。它与现有的分布式文件系统有许多相似之处。但是,与其他分布式文件系统的区别很明显。HDFS具有高度的容错能力,并且能部署在低成本硬件上。HDFS提供对应用程序数据的高吞吐量访问,并且适用于具有大数据集的应用程序。
    • YARN:YARN的基本思想是将资源管理和作业调度/监视的功能拆分为单独的守护程序。这个想法是拥有一个全局ResourceManager(RM)和每个应用程序ApplicationMaster(AM)。应用程序可以是单个作业,也可以是作业的DAG。
    • MapReduce:Hadoop MapReduce是一个软件框架,用于轻松编写应用程序,该应用程序以可靠,容错的方式并行处理大型硬件集群(数千个节点)上的大量数据(多TB数据集)。MapReduce作业通常将输入数据集分成独立的块,这些任务由映射任务以完全并行的方式处理。框架对映射器的输出进行排序,然后将其输入到Reduce任务。通常,作业的输入和输出都存储在文件系统中。该框架负责安排任务,监视任务并重新执行失败的任务。

(2)相关原理:

1.MapReduce原理:

MapReduce是一种编程模型,核心步骤主要包括"Map(映射)"和"Reduce(归约)"。其运行原理如图:先指定一个Map(映射)函数,用来把数据映射成一组键值对,指定并发的Reduce(归约)函数,用来对映射的键值对进行合并计算。

MapReduce原理

2.YARN:

YARN主要负责Hadoop集群的Job(任务)的资源分配与执行,其角色主要包括ResourceManager(在主节点) 和 NodeManager(在子节点),其运行程序的步骤大致如下:

步骤1:用户将应用程序提交到ResourceManager上;

步骤2:ResourceManager为应用程序ApplicationMaster申请资源,并与某个NodeManager通信,以启动ApplicationMaster;

步骤3:ApplicationMaster与ResourceManager通信,为内部要执行的任务申请资源( Container ),一旦得到资源后,将于NodeManager通信,以启动对应的任务。

步骤4:所有任务运行完成后,ApplicationMaster向ResourceManager注销,整个应用程序运行结束。

Yarn运行原理

3.Hadoop Streaming工作原理:

Hadoop streaming是Hadoop的一个工具, 它帮助用户创建和运行一类特殊的Map/Reduce作业, 这些特殊的Map/Reduce作业是由一些可执行文件或脚本文件充当Mapper或者Reducer。

如果一个可执行文件被用于Mapper,则在Mapper初始化时, 每一个Mapper任务会把这个可执行文件作为一个单独的进程启动。 Mapper任务运行时,它把输入切分成行并把每一行提供给可执行文件进程的标准输入。 同时,Mapper收集可执行文件进程标准输出的内容,并把收到的每一行内容转化成key/value对,作为Mapper的输出。 默认情况下,一行中第一个tab之前的部分作为key,之后的(不包括tab)作为value。 如果没有tab,整行作为key值,value值为null。不过,这可以定制,在下文中将会讨论如何自定义key和value的切分方式。

如果一个可执行文件被用于Reducer,每个Reducer任务会把这个可执行文件作为一个单独的进程启动。 Reducer任务运行时,它把输入切分成行并把每一行提供给可执行文件进程的标准输入。 同时,Reducer收集可执行文件进程标准输出的内容,并把每一行内容转化成key/value对,作为Reducer的输出。 默认情况下,一行中第一个tab之前的部分作为key,之后的(不包括tab)作为value。

(3)相关命令介绍:

  • Linux相关命令:
    • 安装软件: yum install <软件名> -y
    • 下载文件: wget <下载地址>
    • 生成ssh密钥: ssh keygen
    • 拷贝密钥: ssh-copy-id -i <密钥路径> <用户名>@<地址>
    • 远程ssh连接: ssh <用户名>@<地址>
    • 添加可执行权限: chmod +x <文件路径>
    • 显示当前所有java进程: jps
  • HDFS相关命令:
    • 在HDFS创建文件夹: hadoop fs -mkdir [-p] <文件夹路径>
    • 上传文件(文件夹)到分布式存储HDFS: hadoop fs -put <本地路径> <HDFS路径>
    • 拉取文件(文件夹)到本地: hadoop fs -get <HDFS路径> <本地路径>
  • vim相关命令:
    • 进入编辑模式,在当前字符前插入光标:i
    • 进入命令行模式:ESC
    • 搜索命令(命令行模式下)::/<搜索内容>
    • 保存并退出文件(命令行模式下)::wq