Hadoop
文章平均质量分 66
Hadoop
yui方木
梦中的艾恩葛朗特
展开
-
ZooKeeper原理
一、ZooKeeper集群中服务器之间是怎样通信的?Leader服务器会和每一个Follower/Observer服务器建立TCP连接,同时为每个F/O都创建一个叫做LearnerHandler的实体。LearnerHandler主要负责Leader和F/O之间的网络通讯,包括数据同步,请求转发和Proposal提议的投票等。Leader服务器保存了所有的F/O的LearnerHandler二、ZooKeeper概念理解ZooKeeper作为一个分布式的服务框架,主要用来解决分布式集群中应用系统原创 2021-11-09 16:43:32 · 1746 阅读 · 3 评论 -
ZooKeeper监听
一、一个客户端修改了某个节点的数据,其他客户端能够马上获得到这个最新数据吗ZooKeeper不能确保人和客户端都能获得(即:Read Request)到一样的数据,除非客户端自己要求。客户端要求获取到一样的数据的方法是在获取数据之前调用org.apache.zookeeper.AsyncCallback.VoidCallback, java.lang.Object) sync在对获取的数据是否是最新版本不敏感或者一个客户端修改了数据其他的客户端不需要立即能够获取到最新数据的情况下,可以不关心这点在其原创 2021-11-09 15:25:24 · 2258 阅读 · 0 评论 -
MapReduce跑得慢的原因以及优化方法
MapReduce跑得慢的原因MapReduce程序的效率瓶颈在于两个方面:一、 计算机性能CPU、内存、磁盘健康、网络二、 I/O操作数据倾斜map和reduce数量设置不合理reduce等待时间过久小文件过多大量不可拆分的超大文件spill次数过多merge次数过多我们优化的重点是I/O操作MapReduce优化方法一、数据输入合并小文件:在执行mr任务前将小文件进行合并,因为大量的小文件会产生大量的map任务,增大map任务装载次数,而任务的装载比较耗时,从而导原创 2021-11-04 14:33:19 · 3395 阅读 · 0 评论 -
Hadoop配置归档
Hadoop常用端口配置1.HDFS端口参数描述默认配置文件例子值fs.default.namenamenode RPC交互端口8020core-site.xmlhdfs://master:8020/dfs.http.addressNameNode web管理端口50070hdfs-site.xml0.0.0.0:50070dfs.datanode.addressdatanode 控制端口50010hdfs-site.xml0.0.0.0:5原创 2021-08-24 17:15:09 · 301 阅读 · 0 评论 -
Windows系统安装hadoop并启动
首先最基本的要安装JDK并配置好了环境变量然后去hadoop官网下载对应版本的压缩包解压到本地在本地hadoop目录下找到:core-site.xml<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> <原创 2021-07-29 20:56:12 · 2208 阅读 · 0 评论 -
HDFS中的FileSystem初始化过程
hadoop的HDFS的原理和上传和下载部分源码这是对FileSystem的初始化操作:使用单例模式创建FileSystem:声明NameNode代理对象rpc获取Namenode代理对象 ,看一下这个namenode的类型:是ClientProtocol类型的:搜一下这个ClientProtocol,发现他是一个接口:看这边注释:在版本69之前,这个类ClientProtocol同时作为NN的客户端接口和用于与NN通信的RPC协议。查了资料:这和远程过程调用(RPC)中的My原创 2021-06-21 17:40:35 · 785 阅读 · 0 评论 -
NN、DN、2NN、JN
NN–NameNodeNN负责对HDFS上的元数据进行整理在NN上存放了两份重要信息:1.文件由哪些块组成、2.每个块存在哪个位置除此之外还有一些非关键信息:文件名、上传者、上传时间元数据在磁盘中存储在fsimage中NN的持久化NN负责整个HDFS的负载,当客户端对数据进行写操作时候会产生元数据,导致元数据不断增加,存在丢失风险,所以需要对NN中的元数据进行持久化存在着两种持久化的方法:将所有的写操作记录下来,形成日志文件将当前内存内存的数据形成一个快照日志文件持久化方法存原创 2021-06-16 09:39:37 · 1549 阅读 · 0 评论 -
MapReduce工作流程
MapTaskReduceTask原创 2021-04-15 11:19:08 · 244 阅读 · 0 评论 -
Hadoop--MapReduce--CombineTextInputFormat切片机制--FileInputFormat的实现类
CombineTextInputFormat切片机制框架默认的TextInputFormat切片机制是对任务按文件规划切片,不管文件多小都会是一个单独切片,都会交给一个MapTask,如果有大量小文件,就会产生大量的MapTask,处理效率十分低下应用场景CombineTextInputFormat用于小文件过多的场景,它可以将多个小文件从逻辑上规划到一个切片中,这样多个小文件可以交给一个MapTask处理虚拟存储过程设置setMaxInputSize值为4M...原创 2021-04-13 22:59:46 · 290 阅读 · 0 评论 -
Hadoop--MapReduce--TextInputFormat默认切片机制(源码)--FileInputFormat的实现类
FileInputFormat的实现类在运行MapReduce程序时,输入的文件格式包括:基于行的日志文件,二进制格式文件,数据库表等。那么针对不同的数据类型,MapReduce有不同的FileInputFormat接口实现类来读取这些数据,常见的包括:TextInputFormat、KeyValueTextInputForma、NLineInputFormat、CombineTextInputFormat和自定义InputFormat等TextInputFormat切片机制(源码)TextI原创 2021-04-12 22:54:04 · 371 阅读 · 0 评论 -
Hadoop--MapReduce--InputFormat--切片机制与MapTask并行度决定机制
InputFormat数据输入切片与MapTask并行度决定机制MapTask个数决定了并行度虽然增加MapTask会增加运算速度,但是MapTask也不是越多越好,如果数据比较小,那么就不需要太多的MapTask,过多的MapTask反而会降低运算速度MapTask切片存储数据块:Block是HDFS物理上把数据分成一块一块。数据块是HDFS存储数据的单位数据切片:数据切片只是在逻辑上对输入进行分片,并不会在磁盘上将其切分成片进行存储。数据切片是MapReduce程序计算输入数据的单位原创 2021-04-10 22:40:00 · 197 阅读 · 0 评论 -
Hadoop序列化概述及案例搭建
Java序列化与Hadoop序列化Java Serializable序列化方式。是一个重量级的序列化方式。有各种检验信息、头、继承体系而Hadoop序列化只需要简单校验,比较轻量级紧凑:存储空间少传输速度快互操作性:支持多语言的使用序列化与反序列化方法我们先进入Writable接口源码查看:可以看到序列化方法:反序列化方法:第一个对象调用write方法将对象持久化到磁盘,然后下一个将对象拷贝到本地调用readFields方法加载到内存中自定义原创 2021-04-09 22:59:36 · 131 阅读 · 1 评论 -
Hadoop--MapReduce--集群运行
首先创建MapReduce环境在Driver内将输入输出参数改为动态的:FileInputFormat.setInputPaths(job,new Path(args[0])); FileOutputFormat.setOutputPath(job,new Path(args[1]));public class WordCountDriver { public static void main(String[] args) throws IOException,Exception {原创 2021-04-06 12:09:05 · 637 阅读 · 0 评论 -
Hadoop--MapReduce--搭建WordCount案例
流程输入数据Mapper将MapTask传来的文本内容(Text类型)先转换为String类型根据空格将每行切分为单词(xieshisan xieshisan)将单词输出为<单词,1>(<xieshisan,1>)Reduce汇总各个key的个数(xieshisan,1 xieshisan,1)输出该key的总次数(xieshisan,2)Driver获取配置信息,获取job对象实例指定本程序的jar包所在的本地路径关键Mapper原创 2021-04-06 11:31:46 · 267 阅读 · 2 评论 -
Hadoop--MapReduce概述(核心思想、数据类型、编程规范)
MapReduce定义MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完成的分布式运算程序,并发运行在一个Hadoop集群上MapReduce优点易于编程:程序员只关心业务逻辑,实现框架的接口良好的扩展性:可以动态增加服务器,解决计算资源不够的问题高容错性:任何一台机器挂掉,可以将任务转移到其他节点适合海量数据的计算(TB\PB级别),几千台服务器共同计算原创 2021-03-29 21:36:33 · 441 阅读 · 1 评论 -
Hadoop--HDFS读数据流程
读数据流程:首先创建一个分布式文件系统对象FileSystem。然后对NameNode请求读取哪一个数据NameNode返回给客户端文件的元数据客户端创建FSDATAInputSteam对象然后根据节点距离和负载等方面选择读取数据的节点然后关闭资源读取过程是串行的,分块读取然后拼接...原创 2021-03-29 20:15:07 · 207 阅读 · 0 评论 -
Hadoop--HDFS写数据流程
HDFS写数据流程假如本地有一个文件data.txt首先HDFS客户端创建获取一个连接对象FileSystem。然后客户端向NameNode请求上传文件/user/fzl/data.txtNameNode接到请求后对客户端响应,可以上传文件。客户端请求上传第一个Block(0-128M),请返回DataNode然后NameNode返回DataNode1,DataNode2,DataNode3节点(考虑节点距离、负载均衡等因素),表示将采用这三个节点存储数据客户端接到返回节点后,创建FSDat原创 2021-03-28 23:00:12 · 437 阅读 · 0 评论 -
Hadoop--HDFS的API操作
封装获取客户端连接对象和关闭资源方法:import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import org.junit.After;import org.junit.Before;import org.junit.Test;import java.io.IOException;import java.net.U原创 2021-03-28 17:58:59 · 752 阅读 · 0 评论 -
Hadoop--HDFS的API环境搭建、在IDEA里对HDFS简单操作
在windows系统安装hadoop首先下载hadoop:hadoop-3.1.4.tar.gz解压到C:\Hadoop目录下然后下载winutils:https://github.com/cdarlint/winutils:3.0版本然后将winutils3.0版本中的bin目录替换解压出的hadoop-3.1.4目录下的bin目录然后配置环境变量:HADOOP_HOME然后将Hadoop-3.1.4的bin和sbin目录配置到PATH中:此时Hado原创 2021-03-28 13:31:36 · 1427 阅读 · 2 评论 -
NAT模式下虚拟机ping不通主机而主机能ping通虚拟机问题的解决办法
昨天电脑突然断电,今天再开机就发现虚拟机ping不通主机了。找了很久,最后的解决方法是关闭win10的防火墙并打开ICMPv4-in这个规则。首先打开控制面板:进入防火墙设置:选择高级设置:确保公用配置文件是活动的,允许与规则不匹配的入站连接设置入站规则:将ICMPv4-in规则开启:开启后,虚拟机ping主机成功:问题解决...原创 2021-03-28 13:20:40 · 2496 阅读 · 7 评论 -
Hadoop--HDFS的Shell操作(常用命令)
基本语法hadoop fs 具体命令 或者 hdfs dfs 具体命令这两种是完全相同的命令大全常用-help命令,查看命令帮助hadoop fs -mkdir :创建文件夹在hadoop102:9870的hdfs页面查看创建成功上传hadoop fs -moveFromLocal:从本地移动(剪切)到HDFShadoop fs -moveFromLocal 要上传hdfs的文件路径 要上传到hdfs的目标路径在这个例子中:我们就将刚刚创建的shuguo.txt文件上原创 2021-03-27 21:45:30 · 353 阅读 · 0 评论 -
Hadoop--HDFS文件块大小
HDFS中的文件在物理上是分块(Block)存储的,块的大小是可以通过配置参数(dfs.blocksize)来规定的。一个文件块的默认大小是128M。块大小的计算如果寻址时间为10ms,即查找到目标block的时间为10ms寻址时间为传输时间的1%,则为最佳状态。因此传输时间=10ms/0.01=1000ms=1s而目前磁盘传输速率普遍为100M/s所以block大小为:1s*100M/S=100M所以一般企业内定义的块大小为128M(机械硬盘)或256M(固态硬盘)块大小的设置为什么原创 2021-03-26 21:46:22 · 2624 阅读 · 0 评论 -
Hadoop--HDFS概述
HDFS的定义HDFS(Hadoop Distributed File System),是一个文件系统,用于存储文件,通过目录树来定义文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色HDFS的使用场景:适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭之后就不需要改变HDFS的优缺点优点:高容错性:数据自动保存多个副本。它通过增加副本的形式,提高容错性某一个副本丢失以后,它可以自动恢复适合处理大数据:数据规模:能够处理数据规原创 2021-03-26 21:35:22 · 134 阅读 · 0 评论 -
Hadoop--集群一键启停脚本、一键查看集群所有服务器进程脚本
单节点启动和停止进程hdfs/yarn --daemon start/stop namenode/datanode/secondarynamenode/resourcemanager/nodemanager集群启停脚本进入~/bin目录创建脚本:vim hadoopstart.sh#!/bin/bashif [ $# -lt 1 ]then echo "No Args Input..." exit ;ficase $1 in"start") ech原创 2021-03-26 12:09:00 · 848 阅读 · 0 评论 -
Hadoop配置历史服务器、日志聚集、常用端口号(2.x/3.x)
历史服务器为了查看程序的历史运行情况,需要配置一下历史服务器。首先在NameNode配置mapred-site.xml<property> <name>mapreduce.jobhistory.address</name> ?<value>hadoop102:10020</value> ?</property><property> <name>mapreduce.jobhistory.we原创 2021-03-26 11:45:59 · 635 阅读 · 0 评论 -
Hadoop完全分布式运行模式---集群测试(以及遇到的很多错误)
将文件上传至HDFShadoop fs -mkdir /wcinput将wcinput文件夹上传至HDFS然后在wcinput文件夹内创建一个文件word.txt将wcinput/word.txt上传至HDFS:hadoop fs -put wcinput/word.txt /wcinput在hadoop102:9870页面查看:可以看到wcinput文件夹:进入wcinput文件夹:文件已经上传成功:可以进行查看和下载HDFS数原创 2021-03-24 22:58:35 · 780 阅读 · 0 评论 -
Hadoop完全分布式运行模式---群起集群
配置workers进入:cd /opt/module/hadoop-3.1.4/etc/hadoop编写workers:vim workers将节点写入workers配置。然后分发xsync workers启动集群进入hadoop的根目录:cd /opt/module/hadoop-3.1.4如果集群是第一次启动,需要在hadoop102节点格式化NameNodehdfs namenode -format初始化完毕后会出现data、logs目录:然后在hadoop102原创 2021-03-23 10:30:27 · 225 阅读 · 0 评论 -
Hadoop完全分布式运行模式---集群配置
集群规划hadoop102hadoop103hadoop104HDFSNameNode、DataNodeDataNodeSecondaryNameNode、DataNodeYARNNodeManagerResourceManager、NodeManagerNodeManager配置进入cd /opt/module/hadoop-3.1.4/etc/hadoop对core-site.xml(核心配置文件)进行配置:(hadoop102) vim core原创 2021-03-22 22:27:03 · 136 阅读 · 0 评论 -
scp、rsync/xsync分发脚本/SSH免密登录
scp:安全拷贝我们已经在一台虚拟机上安装了hadoop和jdk,那么需要将这台虚拟机上的hadoop和jdk拷贝到其他虚拟机上:scp -r jdk-15.0.2/ $用户名@hadoop102:/opt/module/这是"推"。或者也可以采用"拉":scp -r $用户名@hadoop100:/opt/module/hadoop-3.1.4将文件从另一台虚拟机拉过来。这两种方法都可以,一个是被动等别人传数据,一个是主动拉取数据。还有一种方法,可以在第102号虚拟机,将100号虚拟机的文件拷原创 2021-03-22 20:24:56 · 294 阅读 · 0 评论 -
CentOS安装JDK和Hadoop
首先官网下载jdk和hadoop的jar包:首先将hadoop和jdk的jar包通过ftp传进虚拟机安装JDK然后进入存放jar包的目录,将JDK的jar包解压:tar -zxvf jdk-15.0.2_linux-x64_bin.tar.gz -C /opt/module/然后进入sudo cd /etc/profile.d新建一个配置:sudo vim my_env.sh配置环境变量:配置完后重新加载source /etc/profile,然后查看Java是否安装成功:java -vers原创 2021-03-21 22:16:36 · 303 阅读 · 2 评论 -
Hadoop--模板虚拟机安装(CentOS 7.5)
首先创建一个模板虚拟机,再要增加新增服务器直接复制即可:Hadoop101是留给伪分布式的原创 2021-03-20 18:30:37 · 188 阅读 · 0 评论 -
Hadoop概述--四大组件架构及其关系
Hadoop是什么Hadoop是一个由Apache基金会所开发的分布式系统基础架构主要解决海量数据的存储和海量数据的分析计算问题通常Hadoop是指一个更广泛的概念–Hadoop生态圈Hadoop的优势高可靠性:Hadoop底层维护了多个数据副本,所以即使Hadoop某个计算元素存储出现故障,也不会导致数据的丢失高扩展性:在集群运行间动态增加服务器,可方便地扩展数以千计的节点高效性:在MapReduce思想下,Hadoop是并行工作的,以加快任务处理速度。高容错性:能够自动将失败的任务原创 2021-03-20 11:02:47 · 1670 阅读 · 4 评论