学习时,在vmware中使用linux系统的时候,安装配置hadoop框架,查找一些资料,发现有些介绍不够详细(比如一些路径的变化没有说清楚),刚接触linux的话一下子可能会有些混乱,所以在这里详细地总结、演示一下。下面介绍ubuntu版本的hadoop伪分布式的安装配置。

一、 Hadoop框架的概述

简介:介绍hadoop相关信息。

1.1 hadoop的简介

Hadoop是一个分布式系统基础框架,它的 HDFA 、 MapReduce 、 HBase 分别是Google的GFS、MapReduce、BigTable这三个思想的实现。

特点:

  1. 高可靠。按位存储和处理数据的能力强,可靠性强。
  2. 高可用。它是在计算机集群间分配数据并完成计算任务的,这些集群可以扩展数以千计的节点。
  3. 高效性。能在节点间动态地移动数据,并保证各个节点的动态平衡,所以处理速度非常快。
  4. 高容错性。能够自动保存数据的多个副本,并且能够将失效的任务重新分配。

Google公司三篇论文的思想:

  1. GFS的思想:描述了一个分布式文件系统的设计思路。(HDFS是这篇论文思想的实现)
  2. MapReduce的思想:分散任务,汇总结果。(Hadoop的MapReduce与MapReduce论文中的实现思路一样)
  3. BigTable的思想:一个分布式的结构化数据存储系统的设计思路。(HBase是这篇论文思想的实现。HBase是一个分布式、面向列的开源数据库,它是在Hadoop基础上提供类似BigTable的能力。)
1.2 hadoop版本的变化

hadoop 2.x 相比, hadoop 3.x 的变化:

  1. jdk的最低依赖从1.7变成1.8。
  2. hadoop-client 这个依赖分为 hadoop-client-api 和 hadoop-client-runtime 两个依赖。
  3. 采用 Timeline Server v2 版本。
  4. HDFS 支持可擦除编码(Erasure Encoding)。
  5. 支持随机 Container 和分布式调度。
  6. MR进行了 Task 级别的本地优化。
  7. 多个端口被改动。
  8. 支持多个 Standby 状态的 NameNode 。
  9. DataNode内部添加了负载均衡。
  10. 支持 微软(Azure) 和 阿里(Aliyun) 的分布式文件系统。
1.3 hadoop生态圈

生态圈的常用组件:

组件作用
HDFS分布式文件系统
YARN资源调度框架
HBase建立在hadoop文件系统之上的分布式列式数据库
Hivehadoop上的大数据数据仓库
MapReduce分布式并行编程模型
Pig查询大型半结构化数据集的分析平台
Flume一个高可用、高可靠、分布式的海量日志采集、聚合和传输的系统
Zookeeper提供分布式协调一致性服务
Sqoop在传统数据库与Hadoop数据存储和处理平台间进行数据传递的工具
Mahout提供一些可扩展的机器学习领域经典算法的实现
AmbariHadoop快速部署工具,支持 Apache Hadoop 集群的供应、管理和监控
1.4 三种模式区别

Hadoop安装模式有三种:单机模式(Standalone Mode)、伪分布式模式(Pseudo-Distributed Mode)、完全分布式模式(Fully-Distributed Mode)。

1.4.1 单机模式

单机模式是指Hadoop运行在一台主机上,按默认配置以非分布式模式运行一个java进程。

特点:

  1. 没有 分布式文件系统,直接在本地操作系统的文件系统进行读 / 写 。
  2. 不需要加载任何Hadoop守护进程。
  3. 一般用户本地MapReduce调试。
  4. Hadoop的默认模式。
1.4.2 伪分布式模式

伪分布式模式是指Hadoop运行在一台主机上,使用多个java进程,模仿完全分布式模式的节点。

特点:

  1. 有完全分布式模式的全部功能
  2. 常用于调试程序。
  3. 只有一个节点。
1.4.3 完全分布式模式

完全分布式模式也称做 集群模式

特点:

  1. 将Hadoop运行在多台主机中,各主机按照相关配置运行相应的Hadoop守护进程。
  2. 真正的分布式环境。
  3. 可用于实际生产环境。

二、 Hadoop安装前准备

简介:介绍hadoop安装前需要的准备的设置。

下面命令可以查看这篇文章:Linux常用命令

2.1 安装Xshell、Xftp

可以参考这篇文章:Vmware连接Xshell、Xftp教程

2.2 安装JDK

到 Oracle官网 下载 jdk安装包 ,下载到Windows本地目录下
在这里插入图片描述

打开 Xshell ,选择 Xftp 按钮

在这里插入图片描述

把 安装包上传到Ubuntu系统 根目录 下,直接拖过去

在这里插入图片描述

打开 Xshell 窗口 ,输入 ls ~ 命令查看,或者 cd ~ 到根目录再 ls ,查看

ls ~

在这里插入图片描述

解压 ( tar zxvf 后面跟压缩包名,看你的压缩包名再输入)

tar zxvf jdk-8u162-linux-x64.tar.gz

(解压文件太长,就不截图了)

建立 jdk软连接 ( jdk 后面的版本,根据自己下载的版本而定),最后空格后面是你想定义的名字

ln -s jdk.1.8.0_162 jdk  

在这里插入图片描述
搞定,这三个分别是 软连接 、文件夹 、压缩包

在这里插入图片描述

设置 jdk环境变量 ,打开文件 (如果没下载Xmanager,就用 vi 替代 gedit 的位置)

gedit ~/.bashrc   /* gedit 是打开文件命令 */

在文件末加入以下内容 ,配置到你上面 目录所在的路径 ,第一行的 ~,表示当前用户的用户目录(即当前用户的主目录),也可用/home/用户名来代替~注意 等号两侧不要有空格

所配置的路径,一定要根据自己文件的路径来修改!

export JAVA_HOME=~/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:.
export PATH=$JAVA_HOME/bin:$PATH

在这里插入图片描述

使变量生效

source ~/.bashrc

检验JDK是否安装成功 (如果不是,则是路径配置错了,检查一下路径重新配置)

java -version

在这里插入图片描述

2.3 SSH安装

确实 openssh-clientopenssh-server 是否安装

dpkg -l | grep openssh

如果没有安装,输入以下命令安装

sudo apt-get install openssh-client
sudo apt-get install openssh-server

安装完后重启 ssh服务

sudo /etc/init.d/ssh restart

再检查是否安装完成
在这里插入图片描述

2.4 下载解压Hadoop

Apache官网 下载Hadoop安装包,按上面 2.2 的操作,上传Hadoop安装包

在这里插入图片描述

解压压缩包 ( hadoop- 根据自己版本号修改)

tar -zxvf hadoop-2.7.7.tar.gz

创建软链接,便于使用( hadoop- 后面为你下载的版本号 )

ln -s hadoop-2.7.7 hadoop

设置环境变量

gedit ~/.bashrc

在末尾添加 (注意事项同上面 2.2

export HADOOP_HOME=~/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

在这里插入图片描述

使设置生效

source  ~/.bashrc

检验Hadoop环境变量是否设置正确,输入以下两个命令

whereis hdfs
whereis start-all.sh

在这里插入图片描述
如果能显示 hdfsstart-all.sh 的路径,则表示设置正确。

三、 Hadoop安装的过程

简介:介绍hadoop安装的操作流程。

文件名属性名属性值含义
hadoop-env.shJAVA_HOME/home/<用户名>/jdkJAVA_HOME
.bashrcHADOOP_HOME~/hadoopHADOOP_HOME
core-site.xmlfs.defaultFS
---------------------------------------------hadoop.tmp.dir
hdfs://<ip地址或主机名>:8020
------------------------------------------ /home/<用户名>/hadoop/tmp
配置NameNode地址,8020是RPC通信端口
------------------------------------------------------------------------------------HDFS数据保存的目录(默认是Linux的/tmp目录)
hdfs-site.xmldfs.replication1副本数
mapred-site.xmlmapreduce.framework.nameyarn配置为yarn表示的是集群模式;配置为local表示的是本地模式
yarn-site.xmlyarn.resourcemanager.hostname
------------------------------------------yarn.nodemanager.aux-services
<ip地址或主机名>
------------------------------------------mapreduce_shuffle
ResourceManager的IP地址或主机名
-----------------------------------------------------------------------------------NodeManager上运行的附属服务
3.1 配置主机名

为了安装方便和便于记忆,给主机修改一个名字(已经修改为 node1 ,默认不是这个,你也可以修改别的名字)。

查看操作系统的主机名

hostname

在这里插入图片描述

root权限方法:

  1. 在命令前加上 sudo ,执行后输入root密码。
  2. 先输入 su root ,再打 root密码 ,登录后再输入命令。

root权限 打开 /etc/hostname 文件

gedit /etc/hostname

在这里插入图片描述

将原来的内容删掉,添加你起的主机名

node1    //输入主机名

在这里插入图片描述
重启系统,使修改生效

sudo reboot

查看 ip 地址

ifconfig   

如下图,记下 ip 地址
在这里插入图片描述

推荐设置为静态ip,免去后续网络变化后的麻烦,可以参考下面这两篇文章:

Ubuntu静态ip设置

Vmware相关设置,静态ip设置教程

修改 /etc/hosts 文件

gedit /etc/hosts

在文件末尾,加上 ip地址 和上面设置的 主机名

在这里插入图片描述

3.2 免密登录设置
3.2.1 免密登录介绍

伪分布式只有一个节点,所有本机是服务端,也是客户端。

设置介绍:

  1. 如果需要 本机登录别的主机 ,把本机当做客户端,则安装 SSH客户端 软件(openssh-client) 。
  2. 如果让别的主机(包括本机自己)登录本机,也就是说把本机当做服务端,则安装 SSH服务端 (openssh-server)。

默认是没有安装SSH服务端的,客户端和服务端都要安装好,才能进行免密登录设置。安装参考上面 2.3 的操作。

思路分析:

  1. 在本机创建密匙对(公钥和私钥),将公钥发给集群内的所有主机去认证,让普通用户不需要输入密码就登录集群主机。
3.2.2 免密登录操作

输入命令生成密匙对,输入后连续敲击 三次回车rsa 表示加密算法,系统会自动在 ~/.ssh 目录下生成公钥( id_rsa.pub )和私钥 ( id_rsa )

ssh-keygen -t rsa

在这里插入图片描述
查看 ~/.ssh 目录

ls ~/.ssh

在这里插入图片描述
追加公钥,以 本机连接本机 为例,将公钥追加到 ~/.ssh/authorized_keys 文件中

ssh-copy-id -i ~/.ssh/id_rsa.pub node1  //node1是本机名,根据自己的本机名修改,上面设置成什么就修改成什么

在这里插入图片描述
输入命令查看认证文件 authorized_keys 是否生成

ls ~/.ssh

在这里插入图片描述

cd~/.ssh 目录,再输入命令登录,注意路径的变化,下面免密登录前的路径是 ~/.ssh ,登录后的路径是 ~

ssh node1    //node1为主机名,根据自己的修改

在这里插入图片描述

输入命令退出登录,路径变为了登陆前的路径

exit

在这里插入图片描述

3.3 设置Hadoop配置文件

安装伪分布式模式,要修改这五个文件设置 hadoop-env.shcore-site.xmlhdfs-site.xmlmapred-site.xml (该文件是复制 mapred-site.xml.template ,再生成的,一开始是没有的), yarn-site.xml

找到你这几个文件的路径(如果上面操作换到别的路径,那么要找到自己这几个文件的路径打开)

在这里插入图片描述
接着,开始配置,先修改 hadoop-env.sh 文件

gedit hadoop-env.sh

修改等号 =/jdk 之间的路径(上面你设置的路径,如果是按这篇教程操作,写上图片的就可以了)
在这里插入图片描述
如果不知道在哪,可以打开 Xftp 找,界面操作还是比较熟悉的。

在这里插入图片描述

接着修改 core-site.xml 文件,输入命令

gedit core-site.xml

接着添加以下内容(解释信息不用加上)

<!--配置NameNode地址,node1的位置为你的主机名或者写你的主机地址;port如果不设置,则使用默认端口8020。-->
<property>
   <name>fs.defaultFS</name>
   <value>hdfs://node1:8020</value>
</property>	

<!--下图画出来的 lye ,为你的用户名(就是输入命令时,在主机名前面的那个名字)。HDFS数据保存在Linux的哪个目录,默认值是Linux的tmp目录-->
<property>
   <name>hadoop.tmp.dir</name>
   <value>/home/lye/hadoop/tmp</value>
</property>	

在这里插入图片描述

注意: 一定要设置 hadoop.tmp.dir ,否则默认的 tmp 目录在 /tmp 下面,重启Ubuntu系统就会导致 tmp 目录下的 dfs/name 文件夹被删除,造成 NameNode 丢失。

再修改 hdfs-site.xml ,输入

gedit hdfs-site.xml

添加以下内容, dfs.replication 的默认值是3,伪分布式只有一个节点,所有设置为1。

<property>
  <name>dfs.replication</name>
  <value>1</value>
</property>

在这里插入图片描述

接着设置 mapred-site.xml 文件

先复制 mapred-site.xml.template ,生成 mapred-site.xml

cp mapred-site.xml.template mapred-site.xml

在这里插入图片描述

打开文件, mapreduce.framework.name 的默认值是 local ,设置成 yarn ,让 MapReduce 程序在 YARN框架 上运行。

gedit mapred-site.xml
<property>
   <name>mapreduce.framework.name</name>
   <value>yarn</value>
</property>	

在这里插入图片描述

最后再设置 yarn-site.xml

gedit yarn-site.xml

再添加以下内容, node1 这个位置为主机名,根据自己的修改

<property>
   <name>yarn.resourcemanager.hostname</name>
   <value>node1</value>
</property>	

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

在这里插入图片描述

Hadoop可以配置的属性还有很多,没有配置的就用默认,默认属性配置存放在 hdfs-default.xmlcore-default.xmlmapred-default.xmlyarn-default.xml 文件中。

3.4 格式化

格式化过程创建初始目录文件系统结构 的过程。

输入命令

hdfs namenode -format

注意: 格式化只能进行一次 ,下次启动不需要再格式化了,再格式化会丢失 DataNode 进程。

3.5 启动、验证Hadoop进程

启动 HDFS

start-dfs.sh

再用 jps 验证

jps

如果有 NameNode (HDFS的主服务器)、 DataNode (负责管理各个存储节点 )、 SecondaryNameNode (资源管理器),则表示正确启动。

在这里插入图片描述
再启动 YARN

start-yarn.sh

输入 jps 检验

jps

如果多了 NodeManager(执行实际工作) 、 ResourceManager(负责调度DataManager上的资源) ,则表示正确启动。
在这里插入图片描述
以上 两句启动命令 ,合并下面这一句,平时启动时一句就可以了,提高效率

start-all.sh

如果启动没问题的话,忽略下面直接看到 3.6

另外,如果启动时缺少某个进程,则到 log 目录下查看原因(这个路径根据自己的路径而定,就是把Hadoop解压出来生成的文件夹,或者该文件夹的软连接),打开找到含有 WARN 、Error 、Exception 等关键词,再去找资料想办法解决。

找到目录
在这里插入图片描述
比如DataNode出现问题:

进入目录后
在这里插入图片描述

通过下面这句命令查看错误信息

cat hadoop-root-datanode-node1.log

也可以用 ( gedit 这个命令要下载 Xmanager ,推荐下载,因为下载后操作比较友好)

gedit hadoop-root-datanode-node1.log 

jps后没有DataNode的解决方法:

先关掉Hadoop进程

stop-all.sh

再输入以下两句命令

rm -rf ./hadoop/tmp
rm -rf ./hadoop/logs/*

就可以解决了。

3.6 通过Web访问Hadoop
3.6.1 HDFS web界面

查看 NameNodeDataNode 的信息 ,通过Web查看 50070 端口界面。
Windows浏览器 的网址栏中,输入格式如下(别漏了冒号 : )

ip地址:50070

在这里插入图片描述
按回车确定

在这里插入图片描述

查看 SecondaryNameNode 的信息 ,通过Web查看 50090 端口界面。

输入下面格式命令

ip地址:50090

在这里插入图片描述

按回车确定

在这里插入图片描述

3.6.2 YARN web界面

查看 集群所有应用程序 的信息 ,通过Web查看 8088 端口界面。

输入命令

ip地址:8088

在这里插入图片描述

敲击回车确定

在这里插入图片描述

3.7 测试Hadoop

通过 MapReduce 程序测试 Hadoop 。

在根目录创建文本文件 data.txt (可以起别的名字,里面的内容也可以输入其他的,如果修改别的话,下面操作也跟着修改就可以了)

gedit data.txt

打开后输入

Hello world
Hello hadoop
Hello friend

在这里插入图片描述
用 ls 命令查看根目录

在这里插入图片描述

在 HDFS 创建 input 文件夹

hdfs dfs -mkdir /input

将 data.txt 上传到 HDFS

hdfs dfs -put data.txt /input

查看是否上传成功

hdfs dfs -ls /input

在这里插入图片描述

运行 MapReduce WordCount 例子

cd ~/hadoop/share/hadoop/mapreduce

下面这句命令的 2.7.7 根据自己的修改, data.txt 也要根据自己的修改(如果上面创建时是输入别的名字,也根据自己的修改)

hadoop jar hadoop-mapreduce-examples-2.7.7.jar wordcount /input/data.txt  /output

查看结果

hdfs dfs -cat /output/part-r-00000

输入了3个Hello,其他各一个
在这里插入图片描述

检验成功。

3.8 停止Hadoop进程

关闭 Hadoop进程 ,可以用下面这两句

stop-dfs.sh
stop-yarn.sh

也可以用这一句停止所有进程,效率高

stop-all.sh

查看是否关闭所有Hadoop进程

jps

在这里插入图片描述
至此,伪分布式模式搭建完成。


如果文章对你有帮助,请点个赞,留给评论支持一下😊,若有疑问可以私信留言😉。如果能给个三连(点赞、收藏、关注 )就最好啦😁。

Logo

大数据从业者之家,一起探索大数据的无限可能!

更多推荐