Hadoop架构

一、案列分析

1.1案例概述

        现在已经进入了大数据(Big Data)时代,数以万计用户的互联网服务时时刻刻都在产生大量的交互,要处理的数据量实在是太大了,以传统的数据库技术等其他手段根本无法应对数据处理的实时性、有效性的需求。HDFS顺应时代出现,在解决大数据存储和计算方面有很多的优势。

1.2案列前置知识点

1.什么是大数据

        大数据是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的大量数据集合,是需要新的处理模式才能具备更强的决策能力、洞察发现能力和流程优化能力的海量、高增长率和多样化的信息资产数据。简而言之,就是数据量非常大,大到无法用常规工具处理,如关系型数据库、数据仓库等。这里的“大”又是一个什么量级呢?如阿里巴巴每天所处理的交易数据达到 20PB(即 20971520GB)。传统数据处理技术为何不能胜任?主要原因是关系型数据库是针对表、字段、行这种可使用二维表格表示的结构化数据而设计的,而大数据通常是针对文本这种非结构化数据。

        数据量大是大数据的显著特点,归纳来说大数据特点如下:

  • (1)数据体量巨大。按目前的发展趋势看,大数据的体量已经达到PB甚至EB级。
  • (2)大数据的数据类型多样,以非结构化数据为主。如:网络日志、音频、视频图片、地理位置信息、交易数据、社交数据等。
  • (3)价值密度低。有价值的数据仅占到数据总量相当小的一部分。比如一段监控视频中真正有价值的画面可能只有几秒钟。由于价值密度低,所以迅速地完成数据的价值提纯是目前大数据汹涌背景下亟待解决的难题。
  • (4)产生和要求处理速度快。这是大数据区分于传统数据挖掘最显著的特征。

        另外,大数据也是一种方法论。原则是“一切都被记录,一切都被数字化,从数字里寻找需求、寻找知识、发掘价值”,这是一种新的思维方式,不同于此前的专家方式,而是通过数据分析来得到结论,这是大数据时代的一个显著特征。这也就要求技术人员拥有能够从各种各样类型的数据中快速获得有价值信息的能力。

        目前,有很多大数据处理系统可以处理大数据

2.Hadoop体系结构

Hadoop特点
  • 高可靠性
  • 高扩展性
  • 高效性
  • 高容错性
  • 低成本
  • 可构建在廉价机器上
Hadoop运行模式
  • 单机模式
    • 无须配置,Hadoop被视为一个非分布式模式运行的独立Java进程。
  • 伪分布式模式
    • 只有一个节点的集群,这个节点既是 Master(主节点、主服务器)也是 Slave(从节点、从服务器),可在此单节点上以不同的 Java 进程模拟分布式中的各类节点。
  • 完全分布式模式
    • 对于 Hadoop,不同的系统会有不同的节点划分方式。在HDFS看来分为 NameNode(管理者)和 DataNode(工作者),其中NameNode只有一个,DataNode 可有多个;在 MapReduce 看来节点又分为 JobTrackel(作业调度者)和 TaskTracker(任务执行者),其中 JobTracker 只有一个,TaskTracker 可以有多个。NameNode 和 JobTracker 可以部署在不同的机器上,也可以部署在同一机器上。部署 NameNode 和 JobTracker 的机器是Master,其余的机器都是 Slave。
Hadoop框架的核心构成
  • 分布式文件系统(HDFS)
  • 分布式计算系统(MapReduce)
  • 分布式资源管理系统(YARN)

Hadoop生态圈

  • HDFS:分布式文件系统,是整个Hadoop 体系的基石。
  • MapReduce/YARN:并行编程模型。YARN是下一代的 MapReduce 框架从 Hadoop 0.23.01 版本后,MapReduce 被重构。通常 YARN 也称为MapReduceV2,老版本MapReduce 称为MapReduce V1.
  • Hive:建立在 Hadoop 上的数据仓库。提供类似 SQL 语言的查询方式查询Hadoop 中的数据。
  • Pig:一个对大型数据集进行分析、评估的平台。主要作用类似于数据库里的存储过程。
  • HBase:全称 Hadoop Database。Hadoop 分布式、面向列的数据库来源于Google 关于 BigTable 的论文,主要用于需要随机访问、实时读写的大数据。在后面章节还会详细介绍。
  • ZooKeeper:是一个为分布式应用所设计的协调服务。主要为用户提供同步、配置管理、分组和命名等服务,减轻分布式应用程序所承担的协调任务。

当然还有大量其它项目加入到 Hadoop 生态圈,如:

  • Sqoop:主要用于 Hadoop与传统数据库(MySQL等)间的数据传递。
  • Flume:日志采集系统。
  • Spark:前面提过,是一个相对独立于Hadoop的大数据处理系统,可单独进行分布式处理。在这里列出来是因为它可以和HDFS很好的结合。
  • Oozie:可以将多个MapReduce 作业组合到一个逻辑工作单元中,进行工作计划的安排,类似于工作流管理引擎。
  • Ambari:支持 Hadoop 集群管理、监控的 Web 工具。

        经过近十多年的发展,越来越多的项目加入到了 Hadoop 的生态圈。在本课程中着重介绍3个模块,分别是:HDFS、MapReduce、HBase。对于 Hadoop 应用开发人员来说,这也是最基本的模块。

3..MapReduce 概述

         Hadoop 的 MapReduce 框架源自于 Google 的 MapReduce 论文。在 Google 发表论文时,MapReduce最大成就是重写了 Google的索引文件系统。现在,MapReduce波广泛地应用于日志分析、海量数据排序、在海量数据中查找特定模式等场景中。
        Hadoop 中,并行应用程序的开发是基于 MapReduce 编程模型的,基于它可以各任务分发到由上千台商用机器组成的集群上,实现Hadoop 的并行任务处理功能。前面提过,HDFS 和 MapReduce 二者相互作用,共同完成了 Hadoop 分布式集群的主要任务。

4.MapReduce 框架设计

        与 HDFS 架构设计相似,Hadoop 中用于执行 MapReduce 作业的机器也有两个角色:JobTracker 和 TaskTracker.

  • JobTracker:是一个 Master 服务,用于作业(Job)的管理和调度工作。一个 Hadoop 集群中只有一台 JobTracker。一般情况下,应该把它部署在单独的机器上。JobTracker 负责创建、调度作业中的每一个子任务(MapTask或 ReduceTask)运行于 TaskTracker上,并监控它们。如果发现有失败的任务就重新运行它。
  • TaskTracker:是运行于多个节点上的 Slave 服务,用于执行任务。TaskTracker需要运行在 HDFS的 DataNode 上。

        基于 JobTracker 和 TaskTracker 的运行架构为 MapReduce V1,在下一代MapReduce V2 中,V1 架构已被 YARN 替代。关于 YARN 在本章稍后会讲解。从学习的难易程度来看,应该先了解 MapReduce V1。不论是 V1还是 V2,都不会影响编写 MapReduce 程序,好比同样是一个 Web 应用,运行在 Tomcat 与 Jetty 下的效果是相同的。由此可见,实际上运行 MapReduce 作业的过程对开发人员是透明的。

1.3案列环境

1.本案例实验环境

 

二、实例实施

2.1系统环境设置(所有节点都设置)

1.关闭selinux和防火墙

setenforce 0
sed -i '/^SELINUX=/s/enforcing/disabled/' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld

2.为各个节点设置主机名

hostnamectl set-hostname node1
bashhostnamectl set-hostname node2
bashhostnamectl set-hostname node3
bash

3.修改每台主机的hosts文件

cat <<EOF>>/etc/hosts
192.168.10.101 node1 
192.168.10.102 node2 
192.168.10.103 node3
EOF

4.创建hdoop用户组和hduser用户

[root@node1 ~]# groupadd hadoop
[root@node1 ~]# useradd -g hadoop hduser
[root@node1 ~]# passwd hduser
此处设置密码

5.为hduser用户授权

[root@node1 ~]# visudo在末尾添加:
hduser  ALL=(ALL)       ALL

6.安装JDK

[root@node1 ~]# rpm -ivh jdk-8u171-linux-x64.rpm [root@node1 ~]# vim /etc/profile
在末尾添加:
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH[root@node1 ~]# source /etc/profile

7.配置免密码登录(在node1上配置

[root@node1 ~]# su - hduser
[hduser@node1 ~]$ ssh-keygen -t rsa		 //一路回车键即可 
[hduser@node1 ~]$ ssh-copy-id hduser@node1
[hduser@node1 ~]$ ssh-copy-id hduser@node2
[hduser@node1 ~]$ ssh-copy-id hduser@node3

 2.2安装Hadoop

1.将hadoop包拷贝到hduser的家目录并解压

在node1上操作
[hduser@node1 ~]$ tar zxvf hadoop-2.6.5.tar.gz 
[hduser@node1 ~]$ mv hadoop-2.6.5 hadoop

2.配置hadoop的环境变量

[hduser@node1 ~]$ sudo vim /etc/profile
在末尾添加:
export HADOOP_HOME=/home/hduser/hadoop
export PATH=$HADOOP_HOME/bin:$PATH[hduser@node1 ~]$ source /etc/profile

3.配置hadoop-env.sh文件

[hduser@node1 ~]$ cd ~/hadoop/etc/hadoop/
[hduser@node1 hadoop]$ vim hadoop-env.sh 
在末尾添加:
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64

4.修改yarn-env.sh文件

[hduser@node1 hadoop]$ vim yarn-env.sh 
在末尾添加
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64

5.修改slaves文件

[hduser@node1 hadoop]$ vim slaves
清空文件中原有的内容
node2
node3

6.编辑core-site.xml文件

[hduser@node1 hadoop]$ vim core-site.xml
在末尾找到<configuration>模块
在里面添加配置: 
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hduser/hadoop/tmp</value>
</property>
</configuration>备注:定义hdfs的uri,以及hdfs的临时目录

7.编辑hdfs-site.xml文件

[hduser@node1 hadoop]$ vim hdfs-site.xml 
在末尾找到<configuration>模块
在里面添加:
<configuration>
<property><name>dfs.namenode.secondary.http-address</name><value>node1:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hduser/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hduser/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>备注:
名称节点和数据节点的存放位置,文件副本数和读取权限。

8.修改mapred-site.xml文件

[hduser@node1 hadoop]$ cp mapred-site.xml.template  mapred-site.xml
[hduser@node1 hadoop]$ vim mapred-site.xml
在末尾找到<configuration>模块,在里面添加:<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>node1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node1:19888</value>
</property>
</configuration>备注:Mapreduce作业记录的web地址和端口。

9.修改yarn-site.xml文件

[hduser@node1 hadoop]$ vim yarn-site.xml <configuration><property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>node1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>node1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>node1:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>node1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>node1:8088</value>
</property></configuration>备注:
resourcemanager、nodemanager的通信端口,web端口等信息

10.将hadoop目录拷贝到其他节点上

[root@node1 ~]#scp -r /home/hduser/hadoop node2:/home/hduser 
[root@node1 ~]#scp -r /home/hduser/hadoop node3:/home/hduser

2.3验证安装配置

1.Master 主机(node1)上格式化 NameNode

[hduser@node1 ~]$ cd hadoop/
[hduser@node1 hadoop]$ bin/hdfs namenode -format
[hduser@node1 hadoop]$ sbin/start-dfs.sh

2.查看进程

[hduser@node1 hadoop]$ jps
16721 Jps
15687 NameNode
15866 SecondaryNameNode

3.启动yarn

[hduser@node1 hadoop]$ sbin/start-yarn.sh

4.查看集群环境

[hduser@node1 hadoop]$ bin/hdfs dfsadmin -report

5.浏览器查看 HDFS 运行状态

http://192.168.10.101:50070

2.4运行 Hadoop WordCount 程序

WordCount 实现了对文本中的单词计数的功能,并要求输出结果并按单词首字母排序

1.创建测试文件的目录

[hduser@node1 ~]$ mkdir ~/file

2.编辑测试文件

[hduser@node1 ~]$ cd ~/file/
[hduser@node1 file]$ echo "ni hao hadoop">file1.txt
[hduser@node1 file]$ echo "hello hadoop hi china">file2.txt

3.启动hadoop并 创建hdfs目录

[hduser@node1 file]$ cd ~/hadoop/
[hduser@node1 hadoop]$ sbin/start-all.sh
[hduser@node1 hadoop]$ bin/hadoop fs -mkdir /input2

4.将file1和file2拷贝到hdfs存储目录中

[hduser@node1 hadoop]$ bin/hadoop fs -put ~/file/file* /input2/
[hduser@node1 hadoop]$ bin/hadoop fs -ls /input2/

5.执行WordCount程序,对文件进行统计

[hduser@node1 hadoop]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /input2/ /output2/wordcount1注意:输出目录不能已存在,否则不会输出

6.查看执行结果

[hduser@node1 hadoop]$ bin/hadoop fs -cat /output2/wordcount1/*如果看到输出结果证明hadoop安装成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/874770.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux(CentOS)的“应用商城” —— yum

Linux&#xff08;CentOS&#xff09;的“应用商城” —— yum 关于 yum 和软件包Linux 系统&#xff08;CentOS&#xff09;的生态yum 相关操作yum 本地配置yum 安装 lrzsz.x86_64 关于 yum 和软件包 首先 yum 是软件下载安装管理的客户端&#xff0c;类似各种手机里的“应用…

WEB前端10- Fetch API(同步/异步/跨域处理)

Fetch API Fetch API 可以用来获取远程数据&#xff0c;用于在 Web 应用程序中发起和处理 HTTP 请求。它基于 Promise&#xff0c;提供了一种简单而强大的方式来处理网络通信&#xff0c;替代了传统的 XMLHttpRequest。 Promise对象 Promise 对象是 JavaScript 中处理异步操…

0723,UDP通信(聪明小辉聪明小辉),HTTP协议

我就是一个爱屋及乌的人&#xff01;&#xff01;&#xff01;&#xff01; #include "network_disk_kai.h" 昨天的epoll&#xff1a; 可恶抄错代码了 epoll_s.csockect return listenfdsetsockoptsockaddr_in bind listenfd & serveraddr…

Ubuntu 中默认的 root 用户密码

场景&#xff1a;想要切换root用户&#xff0c;发现得输入密码&#xff0c;以为是以前设置过然后一直尝试都是错误【认证失败】最后发现根本没设置过root用户&#xff0c;默认会随机生成root用户的密码&#x1f605; Ubuntu 中默认的 root 密码是随机的&#xff0c;即每次开机都…

用51单片机或者stm32能否开发机器人呢?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;能的。但是由于单片机和st…

MATLAB练习题——矩阵(2)

逻辑运算 a [5 0.2 0 -8 -0.7 ]&#xff0c;在进行逻辑运算时&#xff0c;a 相当于什么样的逻辑量。 相当于 a[1 1 0 1 1] 角度运算 在 sin(x)运算中&#xff0c;x 是角度还是弧度&#xff1f; 在 sin(x)运算中&#xff0c;x 是弧度&#xff0c;MATLAB 规定所有…

盘点2024年大家都在使用的AI智能写作工具

在科技发达的现在社会&#xff0c;AI已经悄悄的渗入我们生活的各种角落。不知道你有没有尝试过用ai智能写作来完成一些文章创作呢&#xff1f;这次我介绍几个可以提升效率的ai智能写作工具给你试试吧。 1.笔&#xff5c;灵AI写作 CSDN 传送门&#xff1a;https://ibiling.cn…

OpenAI发布GPT-4 Mini的深度分析及中国大模型的弯道超车机会

引言 在OpenAI封禁中国IP访问其API后&#xff0c;紧接着推出了GPT-4 Mini&#xff0c;这是一个引发广泛关注和讨论的新举措。此举不仅让人们质疑OpenAI的战略方向&#xff0c;更引发了对中国大模型是否能弯道超车的讨论。本文将详细分析GPT-4 Mini的特点、市场影响及中国大模型…

谷粒商城实战笔记-50-51-商品分类的删除

文章目录 一&#xff0c;50-商品服务-API-三级分类-删除-逻辑删除1&#xff0c;逻辑删除的配置1.1 配置全局的逻辑删除规则&#xff08;可省略&#xff09;1.2 配置逻辑删除Bean&#xff08;可省略&#xff09;1.3 Bean相应字段上加上注解TableLogic 2&#xff0c;后台接口开发…

分享:大数据信用报告查询平台哪个好?

大数据信用也就是我们常说的大数据&#xff0c;相信很多朋友对这个词都不陌生&#xff0c;特别是在银行申贷的时候&#xff0c;听过比较多&#xff0c;因为在银行做信用贷款的时候都会审查申贷人的大数据信用&#xff0c;贷前提前了解自己的大数据很有必要&#xff0c;那大数据…

基于Java+SpringMvc+Vue技术的慈善捐赠平台设计与实现(源码+LW+部署讲解)

项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑&#xff01; 软件开发环境及开发工具&#xff1a; 操作系统&#xff1a;Windows 10、Windows 7、Windows 8 开发语言&#xff1a;java 前端技术&#xff1a;JavaScript、VUE.j…

列举excel中调整行高列宽的五种方法

列举excel中调整行高列宽的五种方法 在Excel中调整行高列宽的方法有以下五种&#xff1a; 使用鼠标手动调整行高列宽&#xff1a;将鼠标悬停在行或列的边界上&#xff0c;光标会变成双向箭头&#xff0c;此时按住鼠标左键并拖动边界即可调整行高或列宽。 使用快捷键调整行高列…

工具(linux)

Yum 软件包管理器 介绍 yum Yum 是一个在 Red Hat 和 CentOS 等 Linux 发行版中常用的软件包管理器&#xff0c;它可以方便地进行软件包的安装、更新和删除。 安装软件包 使用 yum install 命令可以安装指定的软件包&#xff0c;例如&#xff1a; yum install package_nam…

“论软件测试中缺陷管理及其应用”写作框架,软考高级论文,系统架构设计师论文

原创范文 软件缺陷指的是计算机软件或程序中存在的某种破坏正常运行能力的问题、错误&#xff0c;或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。在目前的软件开发过程中&#xff0c;缺陷是不可避免的。软件测试是发现缺陷的主要手段&#xf…

【北航主办丨本届SPIE独立出版丨已确认ISSN号】第三届智能机械与人机交互技术学术会议(IHCIT 2024,7月27)

由北京航空航天大学指导&#xff0c;北京航空航天大学自动化科学与电气工程学院主办&#xff0c;AEIC学术交流中心承办的第三届智能机械与人机交互技术学术会议&#xff08;IHCIT 2024&#xff09;将定于2024年7月27日于中国杭州召开。 大会面向基础与前沿、学科与产业&#xf…

路由表与IP数据报转发:基础小白指南

目录 1. 路由表的基本概念 2. 路由表中的默认路由 3. IP数据报的转发流程 4. 路由聚合 5. 最长前缀匹配 总结 在网络世界中&#xff0c;IP数据报的转发是如何进行的&#xff1f; 这篇文章将带你深入了解路由表的基本概念和IP数据报的转发流程。我们会用简洁明了的语言和实…

nodejs启动项目报错 Error: listen EACCES: permission denied 0.0.0.0:5000

nodejs启动项目报错 Error: listen EACCES: permission denied 0.0.0.0:5000&#xff0c;截图如下&#xff1a; 解决方法 在管理员权限下打开 CMD&#xff08;命令行&#xff09;并运行&#xff1a; net stop winnatnet start winnat 执行完成后在此通过nodejs启动项目即可…

centos系统mysql数据库差异备份与恢复

文章目录 差异备份mysql数据一、 安装 Percona XtraBackup数据库中创建一些数据三、创建全备份四、创建差异备份1. 在数据库中添加数据&#xff0c;让数据发生一些改变2. 创建第一个差异备份3. 数据库中再次添加一些数据4. 创建第二个差异备份 五、模拟数据丢失&#xff0c;删库…

minio 服务docker配置

用minio docker配置了一个服务&#xff0c;分享链接始终是127.0.01开始的&#xff0c; 改成docker的host的ip则提示签名不匹配&#xff0c; 好在这个文件主要是用来下载的&#xff0c;所以可以通过设置bucket的匿名访问权限来实现下载&#xff1b; 这样不需要后面的地址参数就…

UM960硬件设计,最小系统推荐设计

备注&#xff1a; l L1&#xff1a;推荐使用 0603 封装的 68 nH 射频电感l C1&#xff1a;推荐使用 100 nF 100 pF 两个电容并联l C2&#xff1a;推荐使用 100 pF 电容l C3&#xff1a;推荐使用 n 10 μF 1 100 nF 电容并联&#xff0c;总容值不小于 30 μFl R1&#xff1…