目录

一、Hadoop简介

1.1 什么是Hadoop

1.2 Hadoop 优势

1.3 Hadoop的主要模块

1.4 架构描述

1.4.1 HDFS架构

1.4.2 YARN架构

1.4.3 MapReduce架构

1.4.4  三者关系

1.5 大数据的生态模型

二、Hadoop的安装和调试

2.1 安装

2.2 Hadoop的运行

2.2.1 本地模式(Standalone Operation)

2.2.2 伪分布式(Pseudo-Distributed Operation)

2.2.3 完全分布式(Fully-Distributed Operation)

2.2.4 节点扩容


一、Hadoop简介

1.1 什么是Hadoop

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群实现高速运算和存储。

Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS(Hadoop Distributed File System)。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。

1.2 Hadoop 优势

Hadoop主要是针对大数据所设计的分布式文件存储工具,所以它有一下特点:

高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。

高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。

高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。

高容错性:能够自动将失败的任务重新分配。

1.3 Hadoop的主要模块

hadoop Common: 包括Hadoop常用的工具类,主要包括系统配置工具Configuration、远程过程调用RPC、序列化机制和Hadoop抽象文件系统FileSystem等。

Hadoop Distributed File System (HDFS): 分布式文件系统,提供对应用程序数据的高吞吐量,高伸缩性,高容错性的访问。

Hadoop YARN: 任务调度和集群资源管理。

Hadoop MapReduce: 基于YARN的大型数据集并行处理系统。是一种计算模型,用以进行大数据量的计算。

在大数据的计算中,迁移计算往往比迁移数据更有效。

1.4 架构描述

1.4.1 HDFS架构

该架构主要分为3个模块:NameNode、DataNode、Secondary NameNode

NameNode(NN):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。

DataNode(DN):在本地文件系统存储文件块数据,以及块数据的校验和。

Secondary NameNode(2NN):每隔一段时间对NameNode元数据备份。

1.4.2 YARN架构

该架构主要分为4个模块:ResourceManager、NodeManager、ApplicationMaster、Container;

ResourceManager(RM):整个集群资源(内存、CPU等)的管理者;

NodeManager(NM):单个节点服务器资源的管理者;

ApplicationMaster(AM):单个任务运行的管理者;

Container:容器,相当于一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等。

图 1 YARN架构

1.4.3 MapReduce架构

该架构主要分为2个阶段:Map阶段、 Reduce 阶段

Map 阶段:并行处理输入数据
        Reduce 阶段:对Map 结果进行汇总

图 2 MapReduce架构

1.4.4  三者关系

图3 三者关系

1.5 大数据的生态模型

图4 大数据资源模型

名词解释:

Sqoop:Sqoop 是一款开源的工具,主要用于在Hadoop、Hive 与传统的数据库(MySQL)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL,Oracle 等)中的数据导进到Hadoop 的HDFS 中,也可以将HDFS 的数据导进到关系型数据库中。

Flume:Flume 是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume 支持在日志系统中定制各类数据发送方,用于收集数据。

Kafka:Kafka 是一种高吞吐量的分布式发布订阅消息系统。

Spark:Spark 是当前最流行的开源大数据内存计算框架。可以基于Hadoop 上存储的大数据进行计算。

Flink:Flink 是当前最流行的开源大数据内存计算框架。用于实时计算的场景较多。

Oozie:Oozie 是一个管理Hadoop 作业(job)的工作流程调度管理系统。

Hbase:HBase 是一个分布式的、面向列的开源数据库。HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。

Hive:Hive 是基于Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL 查询功能,可以将SQL 语句转换为MapReduce 任务进行运行。其优点是学习成本低,可以通过类SQL 语句快速实现简单的MapReduce 统计,不必开发专门的MapReduce 应用,十分适合数据仓库的统计分析。

ZooKeeper:它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。

二、Hadoop的安装和调试

官网:https://hadoop.apache.org

官方文档:https://hadoop.apache.org/docs

下载连接:https://hadoop.apache.org/releases.html

本文实验所需要的安装包:

jdk-18_linux-x64_bin.tar   hadoop-3.2.1.tar

常用端口说明:

2.1 安装

###在对应的网站下载相应的包##创建指定的hadoop用户进行操作
useradd hadoop
echo hadoop | passwd --stdin hadoop
mv * /home/hadoop/
su - hadoop ##对数据包进行解压
tar zxf jdk-8u181-linux-x64.tar.gz
tar zxf hadoop-3.2.1.tar.gz##设置相应的软连接
ln -s jdk1.8.0_181/ java
ln -s hadoop-3.2.1/ hadoop##修改环境变量,指定Java和Hadoop的路径
vim hadoop-env.sh-export JAVA_HOME= /home/hadoop/java-export JAVA_HOME= /home/hadoop/hadoop

【注】创建软连接是为了更好的在版本升级时的切换。

2.2 Hadoop的运行

Hadoop运行模式分为3种:本地模式 、伪分布式模式以及完全分布式模式

本地模式:单机运行,演示官方案例,生产环境一般不使用;

伪分布式模式:单机运行,具备 Hadoop集群的所有功能。一台服务器模拟一个分布式的环境 。可内部测试使用,生产环境不用。

完全分布式模式: 多台服务器组成分布式环境。 生产环境使用。

2.2.1 本地模式(Standalone Operation)

创建input目录,将默认配置文件目录中以xml文件为后缀的拷贝到input目录,使用jar命令过滤input目录文件中以dfs开头的内容,并且自动创建output目录

##在Hadoop目录下完成##创建目录
mkdir input##目录里输入内容
cp etc/hadoop/*.xml input##进行目标查找
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+'##查看结果
cat output/*

2.2.2 伪分布式(Pseudo-Distributed Operation)

在单个节点上运行,其中每个Hadoop守护进程在单独的Java进程中运行

配置:

##查看本机的workers
cat etc/hadoop/workers##修改配置文件,设置本机为master
vim etc/hadoop/core-site.xml
-----------------------------
<configuration><property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property>
</configuration>
----------------------------##设置副本数为1
vim etc/hadoop/hdfs-site.xml
-----------------------------
<configuration><property><name>dfs.replication</name><value>1</value></property>
</configuration>
-----------------------------##检查ssh的免密登录
ssh-keygen
ssh-copy-id localhost  #密码则为用户hadoop的密码
ssh localhost       #如果不需要密码,则免密登陆成功
exit                #使用exit退出ssh,否则会叠加shell,引起错乱##初始化化文件系统--初始化后的文件都在tmp中,可以进行查看
bin/hdfs namenode -format##启动NameNode守护程序和DataNode守护程序
sbin/start-dfs.sh##使用jps查看当前进程---->jps是jdk提供的一个查看当前java进程的小工具(在java/bin)
##我们可以直接写入环境变量中
vim ~/.bash_profile
-----------------------
PATH=$HOME/java/bin##创建分布式用户目录/user/hadoop(该子目录的名字hadoop必须与操作用户hadoop一致)
bin/hdfs dfs -mkdir /user/hadoop    ---->创建完成后即可查看##使用浏览器打开节点--->图形界面查看信息
172.25.21.1:9870##使用命令行查看信息
bin/hdfs dfsadmin -report

使用:

##在分布式文件系统中创建input目录,输入数据
bin/hdfs dfs -mkdir input
bin/hdfs dfs -put etc/hadoop/*.xml input##查看文件内容---web页面也可以查看
bin/hdfs dfs -ls
bin/hdfs dfs -ls input/##测试--使用Hadoop自测的包,统计里面的数字并输出到相应的文件中
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar wordcount input output
bin/hdfs dfs -ls
bin/hdfs dfs -cat output/*   -----此时生成的ouput目录在分布式文件系统中,与本地的output无关

master的端口为:9000

datanode的端口为:9866

【注】在文件输出时,目标文件不能存在

输入文件在web界面查看:

2.2.3 完全分布式(Fully-Distributed Operation)

将NN和DN分开

##停止之前的hdfs
--sbin/stop-dfs.sh##workers文件中指定数据节点--这里要提前做好解析
server2
server3##server1中修改etc/hadoop/core-site.xml 文件,由于是完全分布式,必须指定ip
----------------------
<configuration><property><name>fs.defaultFS</name><value>hdfs://172.25.21.1:9000</value></property>
</configuration>
----------------------##修改hdfs etc/hadoop/hdfs-site.xml -----设置由两个数据节点
----------------------
<configuration><property><name>dfs.replication</name><value>2</value></property>
</configuration>
----------------------##安装nfs,设置开机启动--->使配置文件共享
yum install nfs-utils -y
systemctl enable --now  nfs##sever2\3创建相应的hadoop用户,使ID保持一致
useradd hadoop
id hadoop##server1配置网络共享/home/hadoop,让hadoop用户有权力可读可写,并重启nfs服务
vim/etc/exports
--------
/home/hadoop    *(rw,anonuid=1000,anongid=1000)
--------
systemctl restart  nfs
showmount -e        #查看文件挂载的目录##server2 server3 分别挂载网络文件
mount 172.25.21.1:/home/hadoop/ /home/hadoop/
su - hadoop
ls##配置完成后进入server1 初始化配置
bin/hdfs namenode -format##开启server1上的namenode##开启后发现server2和server3上的datenode也被打开,使用jps查看进程
jps        #每个节点分别查看,可以看到相应的节点身份##网页中也可以查看
172.25.21.1:9870(nn端)

2.2.4 节点扩容

##设置新加入节点的最基本信息
yum install  -y nfs-utils.x86_64    #安装nfs
useradd hadoop                      ##创建hadoop用户
id hadoop                           #确保uid和gid都是1000
mount 172.25.21.1:/home/hadoop/ /home/hadoop/  ##挂载网络文件目录
df              ##查看挂载##配置server1中的worker文件,设置工作节点为3个##在新加入的节点中,启动相应的数据节点
bin/hdfs --daemon start datanode
jps  ##查询java进程##在网络端查看即可

参考文档:大数据技术之Hadoop(入门)概述、运行环境搭建、运行模式_@从一到无穷大的博客-CSDN博客

Hadoop(一) 原理简介、基本构建相关推荐

  1. HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介

    本系列是本人对Hive的学习进行一个整理,主要包括以下内容: 1.HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介 2.HiveQL学习笔记(二):Hive基础语法与常用函数 ...

  2. javascript原理_JavaScript程序包管理器工作原理简介

    javascript原理 by Shubheksha 通过Shubheksha JavaScript程序包管理器工作原理简介 (An introduction to how JavaScript pa ...

  3. Flink部署、使用、原理简介

    通过安装包方式部署 下载地址 https://archive.apache.org/dist/flink/flink-1.7.2/flink-1.7.2-bin-hadoop27-scala_2.11 ...

  4. 轻量级日志系统Loki原理简介和使用

    前言 这篇文章应朋友的要求,让写一篇loki日志系统,咱定义不容辞 一定要好好写 开干! 现实中的需求 公司的容器云运行的应用或某一个节点出现了问题,解决的思路 问题首先被prometheus监控 1 ...

  5. 3D绘图过程及原理简介

    3D绘图过程及原理简介 收藏 Standard Primitives(标准几何体) 在创建命令面板的Geometry(几何体)对象类型中有如下几个次级分类项目: • Standard Primitiv ...

  6. Kademlia协议原理简介V1.1

    <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />   Kadem ...

  7. Boosted Trees原理简介

    Boosted Trees原理简介 XGBoost代表"极端梯度增强",其中术语"梯度增强"源自Friedman撰写的论文<贪婪函数近似:梯度增强机> ...

  8. Nginx 反向代理工作原理简介与配置详解

    Nginx 反向代理工作原理简介与配置详解 测试环境 CentOS 6.8-x86_64 nginx-1.10.0 下载地址:http://nginx.org/en/download.html 安装 ...

  9. DeepLearning tutorial(1)Softmax回归原理简介+代码详解

    FROM: http://blog.csdn.net/u012162613/article/details/43157801 DeepLearning tutorial(1)Softmax回归原理简介 ...

  10. DeepLearning tutorial(3)MLP多层感知机原理简介+代码详解

    FROM:http://blog.csdn.net/u012162613/article/details/43221829 @author:wepon @blog:http://blog.csdn.n ...

最新文章

  1. 推荐一位在BAT大厂工作的技术+美女双料博主
  2. [转]android的selector,背景选择器
  3. 教你两种python selenium保存图片的方法
  4. 别在 Java 代码里乱打日志了,这才是打印日志的正确姿势!
  5. 第八节 字符串的插入
  6. TP5_模型初始化_踩坑记录
  7. plsql怎么用字段查表明_如何将oracle表中的字段类型、字段注释说明、字段名一起查询出来...
  8. 关于SparkMLlib的基础数据结构Spark-MLlib-Basics
  9. oracle anonhugepage,案例:Oracle linux redhat检查Transparent HugePages状态并关闭
  10. Codeforces Round #390 (Div. 2) A. Lesha and array splitting
  11. 中文系统使用日文键盘-转
  12. gsp计算机设施设备表格,GSP计算机系统内审表.doc
  13. Javascript格式化工具
  14. 灵雀云Kube-OVN:基于OVN的开源Kubernetes网络实践
  15. 如何快速翻译医学类英文专业文献?
  16. 【ARCore 入门开发课程系列】ARCore 打造沉浸式体验全过程
  17. IOS 点击空白处隐藏键盘的几种方法
  18. 自动化测试框架-数据驱动(1)
  19. CFSSL: 证书管理工具:3:使用CA私钥与证书签发证书
  20. REDIS哨兵【Sentinel】模式+哨兵的核心知识点+redis哨兵主从切换的数据丢失问题+上一章铺垫的【异步复制数据丢失问题】+【集群脑裂】

热门文章

  1. nifi 安装 使用案例
  2. 什么是深度学习的视频标注?
  3. java中.rtf文件变成文本文件
  4. 学习java之前应该先了解哪些知识?
  5. chrome插件开发引入图片静态资源
  6. 2022张宇考研基础30讲 第六讲 中值定理
  7. 【2023】上海交通大学计算机考研信息汇总
  8. 2017 ACM-ICPC 青岛站 总结
  9. 南开大学外国语言学及应用语言学专业(学硕)考研上岸经验分享
  10. python(模块)xlsxwriter