![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
hadoop
文章平均质量分 56
hahachenchen789
后台开发,专注容器、k8s、云原生。
展开
-
centos7下实现protobuf转换
protobuf版本:2.5.0编译见另一篇博文。 首先需要创建一个proto文件,定义我们所需处理的结构化数据,在pb中,结构化数据一般称为massage,如下所示:package lm; message helloworld { required int32 id = 1; // ID required string str = 2; /...原创 2018-08-24 18:20:25 · 682 阅读 · 0 评论 -
YARN-SLS如何实现大集群,大数据的模拟
对于几台到几十台机器组成的超小集群,可以采用sls或者rumen的文件方式输入,也就是runsls.sh后加参数--input-sls。但如果要模拟1000的中等集群甚至5000以上的大集群,手动修改sls或者rumen文件显然太不现实。hadoop社区一开始也没有考虑到这个问题,因此一直到2.6.5版本,都没有提供解决方案。但5月份新发布的hadoop3.0版本中,实现了这个功能。功能名字:Sy...原创 2018-07-12 22:54:44 · 603 阅读 · 0 评论 -
YARN-SLS中RM如何获得NM和AM的heartbeat
在NMSimulator.java中: public void middleStep() throws Exception { // we check the lifetime for each running containers ContainerSimulator cs = null; synchronized(completedContainerList) { ...原创 2018-07-12 22:20:09 · 485 阅读 · 0 评论 -
YARN capacity schedule配置注意点
以下都在capacity-scheduler.xml中配置 1.yarn.scheduler.capacity.resource-calculator这里如果不配置。则默认是用:org.apache.hadoop.yarn.util.resource.DefaultResourseCalculator,它只会计算内存。从而导致了在分配时,mem正常分配,而vcores始终分配1个。...原创 2018-07-23 23:55:28 · 993 阅读 · 0 评论 -
Hadoop-YARN-SLS模拟器运行
hadoop中提供sls来进行单机模拟。为缺少大集群的用户提供了便利。如何运行?1.配置hadoop安装前的环境:hadoop环境准备-centos7 安装java jdk82.安装Hadoop:hadoop安装和本地模式实现安装好后,对环境变量进行配置:sudo vim /etc/profile在最后添加:HADOOP_HOME=/usr/local/hadoopexport PATH=$PAT...原创 2018-07-11 17:56:15 · 786 阅读 · 0 评论 -
hadoop-yarn SLS运行中的问题
在运行SLS时可能会碰到如下问题:命令:sh $HADOOP_HOME/share/hadoop/tools/sls/bin/slsrun.sh --input-sls=/home/c/sls/output2/sls-jobs.json --nodes=/home/c/sls/output2/sls-nodes.json --output-dir=/home/c/sls/output1 --pri...原创 2018-07-11 17:26:36 · 1036 阅读 · 3 评论 -
阿里搜索秒即弹性调度
目前阿里巴巴搜索的分布式服务一般都是基于Hippo+Carbon来调度的,包括部署、扩缩容、名字服务注册。如下图:其中:Hippo:一层调度(资源调度),解决机器资源分配问题,将一个物理机分成很多资源,根据应用单机不同的资源需求动态创建不同规格的容器(Docker)。一个容器被视作一个Slot。Carbon:二层调度(业务调度),基于各种服务状态决策单机服务是否正常,以决策是否需要自动做机器迁移。...转载 2018-06-28 22:42:40 · 1036 阅读 · 0 评论 -
阿里搜索hippo架构
hippo是目前阿里搜索主要的调度系统,hippo是一套分布式调度系统。与YARN和K8s的目的相同,都是提供为集群资源调度服务。hippo架构hippo是典型的master-slave架构,这与YARN类似,多个master通过zookeeper选主做failover和调度结果的持久化,master上主要是根据业务需求和资源供给进行资源预估,匹配算法和合理资源分配,资源分配的结果通过心跳发向各个...转载 2018-06-28 21:27:27 · 7416 阅读 · 0 评论 -
YARN源码分析—AM-RM通信协议,获得资源
在上几篇博文中分析了YARN调度模拟器SLS的源码,重点分析了AM与RM之间的通信协议。接下来分析在YARN项目中,AM-RM通信如何实现的。注意点:在YARN中,真正已经实现的只有RM和NM,而AM和client只是提供了api,需要用户自行实现。而AM的主要功能是根据业务需求,从RM处申请资源,并利用这些资源完成业务逻辑,因此AM需要跟RM通信,也需要跟NM通信。通信协议:...原创 2018-07-16 17:56:18 · 3320 阅读 · 0 评论 -
YARN-SLS中NM和AM如何进入调度
RM是scheduler的执行者:SLSrunner.javaprivate void startRM() throws ClassNotFoundException, YarnException { Configuration rmConf = new YarnConfiguration(getConf()); String schedulerClass = rmConf.get...原创 2018-07-12 23:14:35 · 722 阅读 · 0 评论 -
hadoop3.0.3-错误: 找不到或无法加载主类 org.apache.hadoop.yarn.sls.RumenToSLSConverte
apache在18年5月底发布hadoop3.0.3,但bug好像更多了。运行rumen2sls.sh,将rumen转化为sls文件时,报错:错误: 找不到或无法加载主类 org.apache.hadoop.yarn.sls.RumenToSLSConverte解决方法:在rumen2sls.sh中,修改calculate_classpath函数:function calculate_classp...原创 2018-07-13 15:27:24 · 1445 阅读 · 1 评论 -
hadoop3.0.3- java.lang.ClassNotFoundException: org.apache.hadoop.yarn.server.timelineservice.collect
运行slsrun.sh时报错:Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.yarn.server.timelineservice.collector.TimelineCollector at java.net.URLClassLoader.findClass(URLClassLoader.java:...原创 2018-07-13 17:09:41 · 2195 阅读 · 0 评论 -
centos-hadoop-3.0版本编译
环境:centos 7protobuf 2.5(只能是2.5,高了或低了都不行)maven 3.5.4(要3.3以上的)hadoop 3.0cmake 3.3一、下载所需的库yum install gcc gcc-c++ ncurses-devel perl openssl-devel二、cmake安装centos7自带的cmake版本过低,卸载:sudo yum remove cmake然后下载...原创 2018-07-15 18:26:23 · 910 阅读 · 0 评论 -
YARN-SLS AM,RM协议解析
AM向RM提交app:submitapp: private void submitApp(ReservationId reservationId) throws YarnException, InterruptedException, IOException { // ask for new application GetNewApplicationR...原创 2018-07-15 15:52:32 · 636 阅读 · 0 评论 -
YARN SLS-SLSRunner完整源码分析
整个slsruner从main函数开始: public static void main(String[] argv) throws Exception { exitAtTheFinish = true; ToolRunner.run(new Configuration(), new SLSRunner(), argv); 函数中调用了run函数,并通过argv传递了命令行参...原创 2018-07-15 11:09:49 · 568 阅读 · 2 评论 -
YARN-SLS支持多维资源输入
SLS在较新版本中,增加了对多维资源输入的支持。但遗憾的是,没有实现在web监控界面中对新建资源的监控。 1.在/etc/hadoop下新建resource-types.xml文件:<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration...原创 2018-07-20 16:09:26 · 421 阅读 · 0 评论 -
YARN SLS调度模拟器拓展的简单想法
SLS的缺点在于输入过于单一和简单,没有实时输入的接口。因此有个想法:将SLS拓展,使之能接收AM的allocate_request一类的信号。拓展其输入。同时拓展输出的数据,也就是metrics,使数据能够反映调度算法的好坏,比如方差等数据。接下来全力做这个项目,进度在博客上更新。...原创 2018-07-13 22:47:05 · 203 阅读 · 0 评论 -
hadoop3.0.3-SYNTH运行成功
在上篇博文:Hadoop3.0.3-SYNTH运行,SYNTH由于NULL user导致错误。当时以为是hadoop的源码没有写好,但仔细研究后发现,可以在SYNTH的json文件中增加user。也就是说官网给出的synth的json文件是不完整的。下面给出可以完美运行的json文件:{ "description": "tiny jobs workload", "num_nodes": 2...原创 2018-07-13 22:34:42 · 299 阅读 · 2 评论 -
Hadoop3.0.3-SYNTH运行
hadoop的迭代实在太快,导致出现很多bug。在运行SYNTH模式时。发现两个问题。1.官方给出的SYNTH的json脚本:{ "description" : "tiny jobs workload", //description of the meaning of this collection of workloads "num_nodes" : 10, //total no...原创 2018-07-13 21:46:16 · 261 阅读 · 0 评论 -
hadoop3.0.3 SLS-Failed to create an AM
在运行slsrun.sh时,报错如下:ERROR sls.SLSRunner: Failed to create an AM: Can't find the queue by the given name: sls_queue_1! Please check if queue sls_queue_1 is in the allocation file.原因:运行所需的文件都应放在/etc/hado...原创 2018-07-13 18:37:29 · 285 阅读 · 0 评论 -
YARN SLS-AM请求资源的协议解析
在slsrunner.java中:startAM->startAMFromSLSTrace->createAMForJob->runNewAM在runNewAM函数中,最后两个参数很重要:private void createAMForJob(Map jsonJob) throws YarnException {...... for (int i = 0;...原创 2018-07-16 11:49:26 · 565 阅读 · 0 评论 -
Hadoop2源码分析-YARN RPC 示例介绍
原博客:https://www.cnblogs.com/smartloli/p/4664842.2.YARN的RPC介绍 我们知道在Hadoop的RPC当中,其主要由RPC,Client及Server这三个大类组成,分别实现对外提供编程接口、客户端实现及服务端实现。如下图所示: 图中是Hadoop的RPC的一个类的关系图,大家可以到《Hadoop2源码分析-RPC探索实战》一文中,通过代码...转载 2018-06-02 11:21:33 · 251 阅读 · 0 评论 -
YARN-client提交任务处理过程
Client向RM提交任务的过程大致分为七步,如下图:1. Client向RM发出请求2. RM返回一个ApplicationID作为回应3. Client向RM回应Application Submission Context(ASC)。ASC包括ApplicationID、user、queue,以及其他一些启动AM相关的信息,除此之外,还有一个Container Launch Context(C...原创 2018-06-05 21:38:15 · 7381 阅读 · 1 评论 -
资源控制平台介绍与YARN的优缺点
Yarn脱胎于MRv1,并克服了MRv1的种种不足。先来看看MRv1让人诟病的地方,主要是可靠性差、扩展性差、资源利用率低、无法支持异构的计算框架:1.可靠性差: MRv1是主从架构,主节点的JobTracker一旦出现问题就会导致整个集群不可用。2.扩展性差: MRv1的主节点JobTracker承担集群的资源管理和作业调度功能,一旦同时提交的作业较多,JobTracker将不堪重负,成为整个集...转载 2018-06-05 15:12:43 · 3536 阅读 · 1 评论 -
NameNode 和 Secondary NameNode 的区别和作用
本文转自:https://blog.csdn.net/remote_roamer/article/details/50675059前言最近刚接触Hadoop, 一直没有弄明白NameNode和Secondary NameNode的区别和关系。很多人都认为,Secondary NameNode是NameNode的备份,是为了防止NameNode的单点失败的,直到读了这篇文章Secondary Nam...转载 2018-05-28 22:29:04 · 2440 阅读 · 0 评论 -
MapReduce和YARN的区别和联系
Hadoop 的最常见用法之一是 Web 搜索。虽然它不是唯一的软件框架应用程序,但作为一个并行数据处理引擎,它的表现非常突出。Hadoop 最有趣的方面之一是 Map and Reduce 流程,它受到Google开发的启发。这个流程称为创建索引,它将 Web爬行器检索到的文本 Web 页面作为输入,并且将这些页面上的单词的频率报告作为结果。然后可以在整个 Web 搜索过程中使用这个结果从已定义...原创 2018-05-28 22:08:13 · 4351 阅读 · 1 评论 -
YARN架构简介
Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器。它的基本设计思想是将MRv1中的JobTracker拆分成了两个独立的服务:一个全局的资源管理器ResourceManager和每个应用程序特有的ApplicationMaster。其中ResourceManager负责整个系统的资源管理和...原创 2018-05-28 21:42:11 · 586 阅读 · 0 评论 -
hadoop伪分布式模式实现
一台机器的各个进程上运行hadoop多个模块,但并不是真正的分布式,因为是一台机器。但是HDFS和MapReduce,还有yarn等模块都运行起来了。因此掌握伪模式的配置较为重要。一、创建用户使用hadoop框架useradd hadooppasswd hadoop然后给hadoop以root的权限,这样比较方便,当然真正配置分布式时不能给这么大权限。vim /etc/sudoers添加如下ro...原创 2018-04-12 21:01:39 · 2000 阅读 · 0 评论 -
hadoop安装和本地模式实现
环境:centos 7下载hadoop:链接:http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.6.5/hadoop-2.6.5.tar.gz下载后进行解压,并进行一系列修改sudo tar -zxf ~/下载/hadoop-2.6.5.tar.gz -C /usr/local # 解压到/usr/local中cd /usr/l...原创 2018-04-11 22:20:43 · 1979 阅读 · 0 评论 -
hadoop环境准备-centos7 安装java jdk8
首先检查系统是否默认安装了jdk,一般而言,默认安装了openjdk。java -verison查看jdk的版本:rpm -qa | grep openjdk如果是openjdk,我们要将其卸载,并安装oracle jdk,因为openjdk功能不全。容易出现问题。yum -y remove java-1.8.0-openjdk-headless.xxx卸载完全后,利用java -verison,...原创 2018-04-11 19:50:10 · 912 阅读 · 0 评论 -
Kubernetes简介
Kubenetes(k8s)是一款由Google开发的开源的容器编排工具,在Google使用已经超过15年。那么k8s是用来解决集群容器运行时的什么问题呢?调度需要确保应用程序能够运行在它应该运行的地方。将应用运行在集群中正确的主机上对你的应用程序而言是很重要的一件事情,因为并不是集群中所有主机都是一样的。负载均衡需要保证来自客户端的负载(请求)能够均匀的分布到集群的节点当中。这对于你的应用程序能...原创 2018-05-30 10:40:04 · 687 阅读 · 0 评论 -
kubernetes组件与核心概念介绍
节点(Node):一个节点是一个运行 Kubernetes 中的主机。作为Kubernetes worker,通常称为Minion。每个节点都运行如下Kubernetes关键组件:Kubelet:是主节点代理。Kube-proxy:Service使用其将链接路由到Pod,如上文所述。Docker或Rocket:Kubernetes使用的容器技术来创建容器。容器组(Pod):一个 Pod 对应于由若...原创 2018-05-30 11:40:45 · 2414 阅读 · 0 评论 -
Yarn Scheduler Load Simulator (SLS)-调度模拟器
YARN的调度器和调度算法总是一个让人感兴趣的方面。比如FIFO,capacity和fair调度算法。每个调度算法都有其自己的特征,而调度的决策受许多因素影响,如公平性、容量保证和资源的可靠性等。在部署一个调度算法到生产集群之前,评估一个调度算法是非常重要的,不幸的是,评估一个调度算法不是那么容易的,评估一个实际的集群是非常耗费时间和成本的,并且很难找到一个足够大的集群用来评测。因此,在一些特定负...原创 2018-06-20 20:21:35 · 1804 阅读 · 2 评论 -
Yarn Scheduler Load Simulator (SLS)-调度算法选择源码解析
如何为SLS选择调度算法。这里谈下本人的理解sls通过slsrun.sh脚本来运行,其中要加入配置文件sls-runner.xml。在该配置文件中,有关于调度算法的配置: </property> <property> <name>org.apache.hadoop.yarn.server.resourcemanager.scheduler....原创 2018-06-23 15:02:36 · 591 阅读 · 0 评论 -
MapReduce和YARN区别
原hadoop框架中MapReduce的问题从上图中可以清楚的看出原 MapReduce 程序的流程及设计思路:1.首先用户程序 (JobClient) 提交了一个 job,job 的信息会发送到 Job Tracker 中,Job Tracker 是 Map-reduce 框架的中心,他需要与集群中的机器定时通信 (heartbeat), 需要管理哪些程序应该跑在哪些机器上,需要管理所有 job...转载 2018-05-31 18:42:41 · 8967 阅读 · 2 评论 -
k8s-kubectl功能源码分析
kubernetes里的命令行接口叫做kubectl,用来控制kubernetes集群,我们要追踪的命令是kubectl create -f-会从指定文件创建k8s资源,我们要创建的资源是使用了nginx基础镜像的单副本pod。首先是kubectl命令的创建,在/cmd/kubectl/kubectl.go文件中,实现了kubectl命令的创建:func main() { rand.Seed(t...转载 2018-06-07 15:11:34 · 1842 阅读 · 0 评论 -
docker进入容器的四种方法
在使用Docker创建了容器之后,大家比较关心的就是如何进入该容器了,其实进入Docker容器有好几多种方式,这里我们就讲一下常用的几种进入Docker容器的方法。进入Docker容器比较常见的几种做法如下:1.使用docker attach2.使用SSH3.使用nsenter4.使用exec目前最为常用的是第四种,exec一、使用docker attach进入Docker容器创建一个守护态的Do...原创 2018-05-31 14:35:37 · 43769 阅读 · 2 评论 -
k8s-kubelet功能源码分析
kubelet这是k8s中的一种服务,每个节点上都会运行kubelet服务进程,默认监听10250端口,接收并执行master发来的指令,管理pod和pod中的容器。定期向master节点汇报资源使用情况。一、kubelet启动流程kubelet是作为一个cmd命令运行,因此接口源码也就是main入口,肯定在cmd文件夹中。cmd/kubelet/kubelet.gofunc main() { ...原创 2018-06-06 19:20:31 · 1088 阅读 · 0 评论 -
k8s源码架构目录分析
api: 输出接口文档用,基本是json源码build:构建脚本cmd:所有的二进制可执行文件入口代码,也就是各种命令的接口代码。pkg:项目diamante主目录,cmd只是接口,这里是具体实现。cmd类似业务代码,pkg类似核心plugin:插件test:测试相关的工具third_party:第三方工具docs:文档example:使用例子Godeps:项目依赖的Go的第三方包,比如docke...原创 2018-06-06 16:28:58 · 4216 阅读 · 2 评论 -
ETCD简介
随着CoreOS和Kubernetes等项目在开源社区日益火热,它们项目中都用到的etcd组件作为一个高可用、强一致性的服务发现存储仓库,渐渐为开发人员所关注。etcd是一个高可用的键值存储系统,主要用于共享键值仓库和服务发现。etcd是由CoreOS开发并维护的,灵感来自于 ZooKeeper 和 Doozer,它使用Go语言编写,并通过Raft一致性算法处理日志复制以保证强一致性。Raft是一...转载 2018-05-30 17:28:48 · 1444 阅读 · 0 评论