Hadoop安装 Ubuntu 18.04 64位 Hadoop版本:Hadoop3.1.3


前言

hadoop

  • Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构
  • Hadoop是基于Java语言开发的,具有很好的跨平台特性,并且可以部署在廉价的计算机集群中
  • Hadoop的核心是分布式文件系统HDFS(Hadoop Distributed File System)和MapReduce
  • Hadoop被公认为行业大数据标准开源软件,在分布式环境下提供了海量数据的处理能力
  • 几乎所有主流厂商都围绕Hadoop提供开发工具、开源软件、商业化工具和技术服务,如谷歌、雅虎、微软、思科、淘宝等,都支持Hadoop

Hadoop发展简史

  • Hadoop最初是由Apache Lucene项目的创始人Doug Cutting开发的文本搜索库。Hadoop源自始于2002年的Apache Nutch项目——一个开源的网络搜索引擎并且也是Lucene项目的一部分
  • 在2004年,Nutch项目也模仿GFS开发了自己的分布式文件系统NDFS(Nutch Distributed File System),也就是HDFS的前身
  • 2004年,谷歌公司又发表了另一篇具有深远影响的论文,阐述了MapReduce分布式编程思想
  • 2005年,Nutch开源实现了谷歌的MapReduce
  • 到了2006年2月,Nutch中的NDFS和MapReduce开始独立出来,成为Lucene项目的一个子项目,称为Hadoop,同时,Doug Cutting加盟雅虎
  • 2008年1月,Hadoop正式成为Apache顶级项目,Hadoop也逐渐开始被雅虎之外的其他公司使用
  • 2008年4月,Hadoop打破世界纪录,成为最快排序1TB数据的系统,它采用一个由910个节点构成的集群进行运算,排序时间只用了209秒
  • 在2009年5月,Hadoop更是把1TB数据排序时间缩短到62秒。Hadoop从此名声大震,迅速发展成为大数据时代最具影响力的开源分布式开发平台,并成为事实上的大数据处理标准

Hadoop 的特性

  Hadoop是一个能够对大量数据进行分布式处理的软件框架,并且是以一种可靠、高效、可伸缩的方式进行处理的,它具有以下几个方面的特性:

  • 高可靠性 采用冗余数据存储方式,即使一个副本发生故障,其他副本也可以保证正常对外提供服务。
  • 高效性 作为分布式计算平台,Hadoop采用分布式存储和分布式处理两大核心技术,能够高效地处理PB级数据
  • 高可扩展性 Hadoop的设计目标是可以高效稳定地运行在廉价的计算机集群上,可以扩展到数以千计的计算机节点上
  • 高容错性 采用冗余数据存储方式,自动保存数据的多个副本,并且能够自动将失败的任务进行重新分配
  • 成本低 Hadoop采用廉价的计算机集群,成本比较低,普通用户也很容易用自己的PC搭建Hadoop运行环境
  • 运行在Linux平台上 Hadoop是基于Java语言开发的,可以较好地运行在Linux平台上
  • 支持多种编程语言 Hadoop上的应用程序也可以使用其他语言编写,如C++

Hadoop在企业中的应用架构
hadoop

Apache Hadoop的版本演变

  Apache Hadoop版本分为两代,我们将第一代Hadoop称为Hadoop 1.0,第二代Hadoop称为Hadoop 2.0。

  • 第一代Hadoop包含三个大版本,分别是0.20.x,0.21.x和0.22.x,其中,0.20.x最后演化成1.0.x,变成了稳定版,而0.21.x和0.22.x则增加了 HDFS HA等重要的新特性。
  • 第二代Hadoop包含两个版本,分别是0.23.x和2.x,它们完全不同于Hadoop 1.0,是一套全新的架构,均包含HDFS Federation和 YARN 两个系统。

hadoop

Hadoop的项目结构不断丰富发展,已经形成一个丰富的Hadoop生态系统
在这里插入图片描述
hadoop

组件功能
HDFSHadoop的分布式文件系统(Hadoop Distributed File System,HDFS)是Hadoop两大核心之一。HDFS具有处理超大数据、流式处理、可以运行在廉价商用服务器上等优点 。
HBase一个提供高可靠性、高性能、可伸缩、实时读写、分布式的列式数据库。
MapReduce分布式并行编程模型,用于大规模数据集(大于1TB)的并行运算。
Hive一个基于Hadoop的数据仓库工具,可用于对Hadoop文件中的数据集进行数据整理、特殊查询和分析存储。
Pig一个基于Hadoop的大规模数据分析平台,提供类似SQL的查询语言Pig Latin。
Zookeeper提供分布式协调一致性服务。
Flume一个高可用的、高可靠的、分布式的海量日志采集、集合和传输的系统。
SqoopSQL-to-Hadoop的缩写,主要用来在Hadoop与传统数据库之间进行数据传递。
Ambari一种基于Web的工具,支持Apache Hadoop集群的安装、部署、配置和管理。

Hadoop安装

环境:Ubuntu 18.04 64位
Hadoop版本:Hadoop3.1.3

一、Ubuntu 18.04 64位安装 (虚拟机环境下)

ub
点击 安装Ubuntu

ub

是否选择安装第三方软件(因人而异),后点击 继续

ub
选择安装类型,我这里进行了分区,后点击 继续
在这里插入图片描述
点击新建分区表…

ub
点击继续

ub
选择空闲,然后再点击+,用来创建交换空间

ub
点击+按钮后,会出现如下界面,进行如下设置:
大小:我们设置512MB
新分区的类型:选择“主分区”选项
新分区的位置:选择“空间起始位置”选项
用于:在下拉列表中选择“交换空间”选项
ub
选择下图中空闲,然后再点击+按钮,用来创建根目录
ub
点击+按钮后,会出现如下界面,进行如下设置
大小:不用改动,系统自动设为剩余的空间
新分区的类型:选择“逻辑分区”选项
新分区的位置:选择“空间起始位置”选项
用于:在下拉列表中选择“EXT4日志文件系统”选项
挂载点:在下拉列表中选择“/”选项
ub
点击现在安装按钮

ub
点击现在安装按钮后,会弹出如下界面,询问“ 将改动写入磁盘吗?”,点击继续按钮

ub
选择时区
时区选择默认即可,点击继续
ub
选择键盘布局
在这里插入图片描述
设置用户名和密码
在这里插入图片描述
现在安装过程,系统会自动安装,不要点击skip,等候系统自动安装完成。

ub

安装完成,重启
安装终于完成,点击现在重启,重启只是重启虚拟机系统,并不是重启Windows系统。

ub
登录
ub
可以使用了!!

ub

显示问题

有时候安装完成后,第一次使用系统显示分辨率会偏小,需要在设置中重新设置

点击桌面左下角的显示应用程序,选择 设置
ub

在设置中找到显示,进行分辨率设置。
ub

二、安装Hadoop

一、创建hadoop用户

如果你安装 Ubuntu 的时候不是用的 “hadoop” 用户,那么需要增加一个名为 hadoop 的用户。

1.首先按 ctrl+alt+t 打开终端窗口,输入如下命令创建新用户 :
sudo useradd -m hadoop -s /bin/bash

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

2.接着使用如下命令设置密码,可简单设置为 hadoop,按提示输入两次密码:
sudo passwd hadoop
3.可为 hadoop 用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题:
sudo adduser hadoop sudo

运行结果
ub

4.使用hadoop用户登录

最后注销当前用户(点击屏幕右上角的按钮,选择注销),返回登陆界面。在登陆界面中选择刚创建的 hadoop 用户进行登陆。(我这里已经是hadoop用户)
ub

二、更新 apt

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

sudo apt-get update

ub
这里可能会出现“Hash校验和不符” 等提示,可通过更改软件源来解决。若没有该问题,则不需要更改。未来编程如果出现这样类似“无法下载”的情况,可能是从软件源下载某些软件的过程中,由于网络方面的原因出现没法下载的情况,那么建议更改软件源。

更换软件源

点击桌面左下角的显示应用程序,选择 软件和更新
ub
重新选择:下载自:…
ub
选择 其他站点…
ub
选择服务器:这里可以选择阿里、华为、清华的资源。
点击:选择服务器

ub
点击:关闭
ub
点击:重新载入
ub

安装vim (vi增强版,基本用法相同)

后续需要更改一些配置文件,建议安装一下:

sudo apt-get install vim

ub

vim的常用模式有分为命令模式插入模式可视模式正常模式。这里,只需要用到正常模式和插入模式:
正常模式
正常模式主要用来浏览文本内容。一开始打开vim都是正常模式。在任何模式下按下Esc键就可以返回正常模式
插入编辑模式
插入编辑模式则用来向文本中添加内容的。在正常模式下,输入i键即可进入插入编辑模式
退出vim
如果有利用vim修改任何的文本,一定要记得保存。Esc键退回到正常模式中,然后输入:wq即可保存文本并退出vim

三、安装SSH、配置SSH无密码登陆

  集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:

1.安装SSH server
sudo apt-get install openssh-server
2.安装后,登陆本机:
ssh localhost

ub
  此时会有如下提示(SSH首次登陆提示),输入 yes 。然后按提示输入密码 hadoop,这样就登陆到本机了。(我因为不是第一次安装没遇到,但是同学遇到了)
SSH首次登陆提示
ub

但这样登陆是需要每次输入密码的,我们需要配置成SSH无密码登陆比较方便:

3.配置成SSH无密码登陆

首先退出刚才的 ssh,就回到了我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中:

exit                           # 退出刚才的 ssh localhost
cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa              # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys  # 加入授权

~的含义:
在 Linux 系统中,~ 代表的是用户的主文件夹,即 “/home/用户名” 这个目录,如你的用户名为 hadoop,则 ~ 就代表 “/home/hadoop/”。 此外,命令中的 # 后面的文字是注释,只需要输入前面命令即可。

ub

4.无需输入密码,直接登陆

此时再用 ssh localhost 命令,无需输入密码就可以直接登陆了
ub

四、安装Java环境

Hadoop3.1.3需要JDK版本在1.8及以上。

官方下载:看准 .tar.gz 文件

在Linux命令行界面中,执行如下Shell命令(注意:当前登录用户名是hadoop,注意:中文版是中文文件):

cd /usr/lib
sudo mkdir jvm #创建/usr/lib/jvm目录用来存放JDK文件
cd ~ #进入hadoop用户的主目录
cd Downloads  #注意区分大小写字母,刚才已经通过FTP软件把JDK安装包jdk-8u162-linux-x64.tar.gz上传到该目录下
sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm  #把JDK文件解压到/usr/lib/jvm目录下

java
JDK文件解压缩以后,可以执行如下命令到/usr/lib/jvm目录查看一下:

cd /usr/lib/jvm
ls

可以看到,在/usr/lib/jvm目录下有个jdk1.8.0_162目录。
下面继续执行如下命令,设置环境变量:

cd ~
vim ~/.bashrc

java
上面命令使用vim编辑器,打开了hadoop这个用户的环境变量配置文件,请在这个文件的开头位置,添加如下几行内容:

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

Esc键退回到正常模式中,然后输入:wq即可保存文本并退出vim,保存 .bashrc文件 并退出vim编辑器。然后,继续执行如下命令让.bashrc文件的配置立即生效:

source ~/.bashrc

可以使用命令查看是否安装成功:

java -version

如果能够在屏幕上返回类似信息,则说明安装成功:

hadoop@ghlab-virtual-machine:~$ java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)

java

五、安装 Hadoop3.1.3

1.下载安装包

官网下载:hadoop-3.1.3.tar.gz

2.安装hadoop

我们选择将 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

3.检查是否可用

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

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

hadoop

六、Hadoop单机配置(非分布式)

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

  现在可以执行例子来感受下 Hadoop 的运行。Hadoop 附带了丰富的例子(运行 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar 可以看到所有例子),包括 wordcount、terasort、join、grep 等。

  在此我们选择运行 grep 例子,我们将 input 文件夹中的所有文件作为输入,筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,最后输出结果到 output 文件夹中。

cd /usr/local/hadoop
mkdir ./input
cp ./etc/hadoop/*.xml ./input   # 将配置文件作为输入文件
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep ./input ./output 'dfs[a-z.]+'
cat ./output/*          # 查看运行结果

执行成功后如下所示,输出了作业的相关信息,输出的结果是符合正则的单词 dfsadmin 出现了1次
hadoop
注意,Hadoop 默认不会覆盖结果文件,因此再次运行上面实例会提示出错,需要先将 ./output 删除。

rm -r ./output

七、Hadoop伪分布式配置

  Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。

1.修改 core-site.xml 和 hdfs-site.xml 文件

  Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xmlhdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。

修改配置文件 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>

hadoop
同样的,修改配置文件 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>

hadoop

Hadoop配置文件说明
  Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。
  此外,伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(官方教程),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。

2.配置完成后,执行 NameNode 的格式化:
cd /usr/local/hadoop
./bin/hdfs namenode -format

成功的话,会看到 successfully formatted 的提示,具体返回信息类似如下:

hadoop

3.开启 NameNode 和 DataNode 守护进程。
cd /usr/local/hadoop
./sbin/start-dfs.sh  #start-dfs.sh是个完整的可执行文件,中间没有空格
4.判断是否启动成功

  启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: “NameNode”、”DataNode” 和 “SecondaryNameNode”(如果 SecondaryNameNode 没有启动,请运行 sbin/stop-dfs.sh 关闭进程,然后再次尝试启动尝试)。如果没有 NameNode 或 DataNode ,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。

hadoop
若出现如下SSH提示,输入yes即可。
hadoop

5.Web页面访问

  成功启动后,可以访问 Web 界面 http://localhost:9870 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。

hadoop

6.若要关闭 Hadoop,则运行
./sbin/stop-dfs.sh

hadoop

下次启动 hadoop 时,无需进行 NameNode 的初始化,只需要运行 ./sbin/start-dfs.sh 就可以!


总结

  以上的截图来自自己本机课程实验报告。部分文字材料,来自老师的PPT和厦门大学林子雨老师的博客林子雨老师博客

  • 8
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值