万字详解,Hadoop大数据技术简介及 伪分布式集群搭建快速入门教程

万字详解,Hadoop大数据技术简介及 伪分布式集群搭建快速入门教程在大学时学习Hadoop大数据技术的时候,安装配置Hadoop框架,发现找的一些资料介绍得不够详细,比如一些路径的变化没有说清楚,这对于初学者来说是不够友好的,所以在这里做个详细总结介绍一下Hadoop框架,以及Ubuntu版本的Hadoop伪分布式的安装配置。

大家好,又见面了,我是你们的朋友全栈君。

学习时,在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文件系统之上的分布式列式数据库
Hive hadoop上的大数据数据仓库
MapReduce 分布式并行编程模型
Pig 查询大型半结构化数据集的分析平台
Flume 一个高可用、高可靠、分布式的海量日志采集、聚合和传输的系统
Zookeeper 提供分布式协调一致性服务
Sqoop 在传统数据库与Hadoop数据存储和处理平台间进行数据传递的工具
Mahout 提供一些可扩展的机器学习领域经典算法的实现
Ambari Hadoop快速部署工具,支持 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.sh JAVA_HOME /home/<用户名>/jdk JAVA_HOME
.bashrc HADOOP_HOME ~/hadoop HADOOP_HOME
core-site.xml fs.defaultFS
———————————————hadoop.tmp.dir
hdfs://<ip地址或主机名>:8020
—————————————— /home/<用户名>/hadoop/tmp
配置NameNode地址,8020是RPC通信端口
————————————————————————————HDFS数据保存的目录(默认是Linux的/tmp目录)
hdfs-site.xml dfs.replication 1 副本数
mapred-site.xml mapreduce.framework.name yarn 配置为yarn表示的是集群模式;配置为local表示的是本地模式
yarn-site.xml yarn.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

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


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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/130291.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 通配符掩码的计算

    通配符掩码的计算关于通配符掩码的计算我不太清楚通配符掩码具体是怎么定义的,但是在大多数初学者的印象中通配符掩码就是子网掩码取反,在网上搜索了一下也没有什么具体解释,下面是摘自百度百科的解释:路由器使用的通配符掩码(或反掩码)与源或目标地址一起来分辨匹配的地址范围,它跟子网掩码刚好相反。它不像子网掩码告诉路由器IP地址的哪一位属于网络号一样,通配…

  • 学生选课管理系统_学生管理系统的主要内容

    学生选课管理系统_学生管理系统的主要内容文件下载地址:https://download.csdn.net/download/axiebuzhen/108950621.业务描述设计本系统,模拟学生选课的部分管理功能。学生入校注册后需统一记录学生个人基本信息,对于面向学生开设的相关课程需要记录每门课程的基本信息,每个任课教师规定其可主讲三门课程,学生选课时系统将相应的选课信息记录入库,考试结束后需在相应的选课记录中补上考试成绩。简化…

    2022年10月15日
  • C语言 neutralize函数,三种常用分子模拟软件绍.doc

    C语言 neutralize函数,三种常用分子模拟软件绍.doc三种常用分子模拟软件绍三种常用分子模拟软件介绍一、NAMD  NAMD(NAnoscaleMolecularDynamics)是用于在大规模并行计算机上快速模拟大分子体系的并行分子动力学代码。NAMD用经验力场,如Amber,CHARMM和Dreiding,通过数值求解运动方程计算原子轨迹。  1.软件所能模拟的体系的尺度,如微观,介观或跨尺度等  微观。  是众多md软件中并行处理…

  • 7折怎么用计算机,美国联想八通道7折好价,海淘Thinkpad X260 笔记本电脑开箱简评(附齐购物到货过程)…

    7折怎么用计算机,美国联想八通道7折好价,海淘Thinkpad X260 笔记本电脑开箱简评(附齐购物到货过程)…美国联想八通道7折好价,海淘ThinkpadX260笔记本电脑开箱简评(附齐购物到货过程)2016-06-0810:30:1896点赞288收藏127评论接上一篇购物过程贴我擦,你有完没完!!!五、转运过程(补齐剩余回国、清关、缴税、到货过程)(一)简要说明电脑到达转运仓库后,会给你绑定的电话发送一条提醒短信。本人在5月12日收到短信通知,本想给大家找找短信,都怪我手太贱已删除,哎。…

  • 《微机原理与接口技术》期末复习笔记「建议收藏」

    《微机原理与接口技术》期末复习笔记「建议收藏」微机原理与接口技术第01章微机原理概述基本知识CPU:中央处理单元(CentralProcessorUnit),处理器,能够分析和执行指令的部件,能分析和执行指令的芯片就是CPUMPU:微处理器,MicroProcessorUnit,CPU集成芯片,比传统CPU功能性能简化,集成度高,价格低廉,性价比高微型计算机(微机:MicroComputer):MPU+存储器+…

  • Python获取当前时间戳_时间转换时间戳

    Python获取当前时间戳_时间转换时间戳秒级importtimenow=time.time()#返回float数据#获取当前时间戳—秒级级print(int(now))毫秒级importtimenow=time.time()#返回float数据#毫秒级时间戳print(int(round(now*1000)))

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号