前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每周学点大数据 | No.62 Hadoop MapReduce 实践—环境搭建(上)

每周学点大数据 | No.62 Hadoop MapReduce 实践—环境搭建(上)

作者头像
灯塔大数据
发布2018-04-04 12:11:25
7780
发布2018-04-04 12:11:25
举报
文章被收录于专栏:灯塔大数据

NO.62

 Hadoop MapReduce 实践—环境搭建(上)

Mr. 王:前面我们讲了很多关于并行算法的理论,今天我们来看看如何在计算机上实际运行一些并行算法。

小可:我早就迫不及待想试试了。

Mr. 王:我们要先安装和配置Hadoop。前面我们提到过,Hadoop 是MapReduce 的一个开源实现版本,如今的Hadoop 已经成为了包含许多部分的独立集合,比如Hive、HBase、ZooKeeper 等。但从根本上讲,Hadoop 的基本组成部分主要有两个:一个是MapReduce ;另一个是HDFS。

小可:MapReduce 我知道,是并行计算的编程框架,那HDFS 是什么呢?

Mr. 王:HDFS 是Hadoop 分布式文件系统。由于Hadoop 是一个并行计算的框架,这意味着它保存的文件往往是存储在多台计算机上的,所以Hadoop 也必须能够管理多台计算机上文件的机制,这就是HDFS。一个配置了HDFS 的机群包括一个NameNode 和数个DataNode。其中NameNode 就像MapReduce 中的Master,负责管理整个文件系统中文件的命名和用户对文件的访问操作等;而

DataNode 相当于Slave,负责存储具体的文件和数据。

小可:嗯,那么Hadoop 是如何安装和使用的呢?

Mr. 王:一般来说,Hadoop 平台都安装在Linux 操作系统下,当然在Windows 操作系统下也是有办法使用它的,不过一般需要一个Linux 终端模拟器,比如Msys 或者Cygwin 等。不过原生的Hadoop 是运行在Linux 环境下的,这里我建议使用Linux 操作系统来安装和配置Hadoop。

Mr. 王:Linux 操作系统最初是由程序员Linus Torvalds 开发的,是一个类UNIX 内核的支持多用户、多线程、多任务、多处理器的操作系统。Linux 是一款广受开发人员喜爱的开源操作系统,有很多组织和社区为它服务。现在市面上有大量的Linux 操作系统的发行版本,这些基于Linux 内核的操作系统统称为Linux。

小可:我听说过,很多初学者都使用Linux 非常著名的发行版本之一Ubuntu Linux。

Mr. 王:是的,配置和安装Linux 的桌面版本非常容易,现在网络上有很多Linux 的安装资源,可以从其官网上下载安装Ubuntu Linux 并将其烧录到一个启动U 盘里面,以便进行Hadoop 的实践。

小可:嗯,我的计算机中已经安装好了Linux。

Mr. 王:在安装好Linux 之后,必须配置Java 环境。因为Hadoop 的原生开发语言是Java,之后我们进行的所有开发都是使用Java 语言。当然,Hadoop 也为喜欢使用C++ 语言的用户开发了C++ 编程接口。不过,在这里我们使用Java。虽说目前很多Linux 发行版本都有很漂亮的图形界面,但是大多数开发者在Linux 下用来操作计算机的环境都是终端(Terminal),终端类似于Windows 下的命令提示符,是一种通过命令行来操作计算机的方式,如果对操作系统的命令比较熟悉的话,操作是非常方便和快捷的。Ubuntu Linux 的终端承载的是Bash Shell。

小可:不太懂,什么是Shell 呢?

Mr. 王:在Linux 操作系统中,我们将操作系统的内核称为Kernel,是操作系统内部最基本的组成部分。而与用户进行交互的部分叫作Shell,可以用来执行命令、程序、和脚本。这里不对其太过深究,如果你对Linux 系统感兴趣的话,网络上有很多相关内容可以查阅。这里给出一些常用的Linux 命令,以便你能更加适应后面的命令操作。我们在Ubuntu Linux 的桌面下可以使用“Ctrl+Alt+T”快捷键来打开终端,或者使用左边的Dash 启动器打开终端。

小可:和Windows 的命令提示符很像,是输入命令的黑框框。

Mr. 王:现在我们看到屏幕上出现的是[ 用户名]@[ 计算机名] ~ $前面部分显示的是用户的名字和本台计算机的名字,后面的小波浪线部分显示的应该是当前路径。而Linux 默认的路径是Home 文件夹,它也称作主文件夹,在Linux 中主文件夹常用“~”来代替。$ 符号是输入命令的界线,后面的就是命令了。

常用的命令如下。

● ls,显示当前路径下的文件。

● cd [ 路径],进入某一个路径。

不论是Linux 还是Windows,都使用“.”表示当前路径,而用“..”表示上一级路径。所

以cd .. 就是返回上一级路径。注意,cd 这个命令和Windows/Dos 下的cd 命令略有不同,返回

上一级文件夹不可以写作 cd..,而要写作cd ..(中间有空格)。

● mkdir [ 文件夹名],创建新的文件夹。

● mv [ 文件源] [ 文件目的],移动文件,它也可以用来修改文件名。

● cp [ 文件源] [ 文件目的],复制文件。

● rm [ 文件],删除文件。

● rm -f [ 文件],强制删除文件。

● rm -r [ 文件夹],删除文件夹。

● rm -rf [ 文件夹],强制删除文件夹。

● cat [ 文件],查看文件的内容。

● ./[.sh],执行当前路径下的脚本。注意不要遗漏“./”,否则会找不到脚本的位置。

小可边听边尝试着使用前面的命令。

Mr. 王:如果熟练的话,操作Linux 系统的速度可以非常快。更重要的是,命令的操作可以在Linux 下写成脚本。可以打开一个文本文件:gedit 1.sh。脚本文件是以.sh 为扩展名的。打开后,首先写下固定的一条命令:#!/bin/bash

然后只要将命令逐条地写在这个脚本文件中就可以了。比如:

这样的一系列命令就可以通过1.sh 的运行自动执行了。我们可以使用./1.sh 命令来执行这个脚本。后面我们会看到很多的.sh,这都是Linux 的Shell 脚本,我们可以通过书写一些简单的脚本对它们有一个初步的认识。其实在脚本中可以包含很复杂的逻辑,包括判断、循环、表达式匹配等。当有需要时,你可以去专门学习Shell脚本语言。

Linux 拥有非常有代表性的用户权限机制。当你在执行一些命令而提示你没有权限时,可以在命令的前面加上sudo,这条命令可以使你以管理员身份执行命令。比如:

这条命令就是重新启动计算机,需要管理员权限,使用sudo 命令来让自己具有管理员权限。

小可:提示我输入密码了!

Mr. 王:密码是最能证明你的管理员身份的验证方式。好了,我们再来说说在Linux 环境下安装Java。

首先要下载JDK。JDK 是Java Development Kit 的缩写,就是Java 开发工具包,是Java 开发必备的环境。不论你使用什么编辑器或者开发环境,想要开发Java,都必须安装JDK。

首先我们从Java 的官方网站下载JDK 的安装包。如果你下载到的是一个.bin 文件,则可以直接运行它,别忘了修改权限。Linux 操作系统有着非常严格的权限机制。在Linux 操作系统看来,任何有着执行权限的文本文件或者二进制文件都是可以直接运行的,所以很多可执行的文本文件或者二进制文件都要先被控制执行权,以保护系统的安全。现在进入它所在的目录,然后使用命令:

来修改它的执行权限(注意,所有的命令都是不输入中括号的,这里是为了标注一些变量的存在,而且不输入$ 符号前面的内容,其会自动出现在终端里)。然后只要使用 sudo ./[.bin 文件的文件名] 命令即可。另外,如果你下载到的JDK 不是一个.bin 文件,则可以将其解压缩到一个方便使用的目录下即可。

小可:这样是不是就安装完成了?

Mr. 王:虽然如此,但是想要使用JDK,还是需要配置环境变量的。

小可:为什么要设置环境变量?

Mr. 王:这里设置环境变量是由于在终端中使用Java 时,我们要事先告诉系统到哪里去找Java,否则计算机就会找不到它。我们在用户目录下打开Bash Shell 的配置文件.bashrc,其中bashrc 前面的“.”表示它是一个隐藏文件,在图形用户界面下一般是看不到它的,在输入文件名时,也注意不要丢掉它。

当然,如果你是vim 选手,就使用:

小可:vim 是什么呢?

文章作者:王宏志

文章编辑:秦革

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 5G融智未来 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
GPU 云服务器
GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于生成式AI,自动驾驶,深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档