Hadoop与Kubernetes学习
文章平均质量分 74
对Hadoop3.0以上版本中的YARN,SLS等组件,以及Kubernetes进行源码分析。
hahachenchen789
后台开发,专注容器、k8s、云原生。
展开
-
使用devspace进行云原生开发
云原生开发的痛点:开发controller/crd operator时,需要在集群中运行测试。部署一般是利用pipeline或者二进制进行。而出现问题需进行调试时,一般只能通过打印日志,然后重新运行pipeline,生成新的镜像,然后更新pod。这样导致效率过低,简单的几行debug都需要走一遍全部流程。devspace是什么?DevSpace是Kubernetes的开源开发工具,可以让您更快地开发和部署云本地软件。官网:https://devspace.sh/安装(以mac原创 2021-10-12 21:46:30 · 643 阅读 · 0 评论 -
kubernetes单节点集群搭建之CNI flannel网络安装
一、前言kubernetes集群搭建方法很多1.可以用第三方工具,比如minikube,kubeadm。2.也可以去kubernetes官网下release出的二进制bin文件。3.下载kubernetes源码,手动编译后生成二进制bin文件,该方法适用于需要对kubernetes源码进行改动或者二次开发的同学。本文采用第三种方法,即编译源码的方式。编译过程不在这详述...原创 2020-05-07 17:38:25 · 7579 阅读 · 1 评论 -
kube-proxy进程源码分析
kube-proxy是运行在Minion节点上的另外一个重要的守护进程,你可以把它当做一个HAProxy,它充当了kubernetes中service的负载均衡器和服务代理的角色,下面我们分别对其启动过程、关键代码分析及设计总结等发面进行深入分析和讲解。进程启动过程kube-proxy进程的入口类源码位置如下:cmd/kube-proxy/proxy.go入口main()函数的逻辑...原创 2019-02-22 00:01:39 · 883 阅读 · 0 评论 -
kubernetes-kubelet进程源码分析(三)
接着上篇博文,我们继续分析kubelet进程的另一个重要功能是如何实现的:定期同步Pod状态信息到API sever。先来看看Pod状态的数据结构定义:Pod的状态又5种:运行中(PodRunning)、等待中(PodPending)、正常终止(PodSucceeded)、异常停止(PodFailed)及未知状态(PodUnknown),最后一种状态很可能是由于Pod所在主机的通信...原创 2019-02-21 17:31:36 · 413 阅读 · 0 评论 -
kubernetes-kubelet进程源码分析(二)
kubelet关键代码分析在上篇博文,我们分析了kubelet进程的启动流程,大致明白了kubelet的核心个哦你工作流程就是不断从Pod Source中获取与本节点相关的Pod,然后开始加工处理,所以我们先来分析Pod source部分代码。前面我们提到,kubelet可是同时支持三类Pod source,为了能够将不同的Pod source汇聚到一起统一处理,谷歌特地设计了Podconfi...原创 2019-02-20 23:53:16 · 426 阅读 · 0 评论 -
kubernetes-kubelet进程源码分析(一)
kubelet是运行在Minion节点上的重要守护进程,是工作在一线的重要工人,它才是负责实例化和启动一个具体Pod的幕后主导,并且掌管着本节点上的Pod和容器的全生命周期过程,定时向master汇报工作情况。此外kubelet进程也是一个server进程,它默认监听10250端口,接收并执行远程(master)发来的指令。进程启动过程kubelet进程的入口类源码位置如下:cmd/k...原创 2019-02-20 14:03:13 · 838 阅读 · 0 评论 -
kubernetes-kube-scheduler进程源码分析
kubernetes scheduler server是由kube-scheduler进程实现的,它运行在kubernetes的管理节点-Master上并主要负责完成从Pod到Node的调度过程。kubernetes scheduler server跟踪kubernetes集群中所有Node的资源利用情况,并采取合适的调度策略,确保调度的均衡性,避免集群中的某些节点过载。从某种意义来说,kuber...原创 2019-02-19 21:10:25 · 961 阅读 · 1 评论 -
kubernetes-kube-controller-manager进程源码分析
运行在Master节点上的第2个进程就是kube-controller-manager进程,即controller-manager server,kubernetes的核心进程之一,其主要目的是实现kubernetes集群的故障检测和恢复的自动化工作,比如内部组件EndpointController控制器负责Endpoints对象的创建和更新;ReplicationManager根据注册表中的Re...原创 2019-02-18 21:21:36 · 1186 阅读 · 0 评论 -
kubernetes-kube-apiserver进程源码分析
kubernetes API server是由kube-apiserver进程实现的,它运行在kubernetes的管理节点—master上并对外提供kubernetes Restful API服务,它提供的主要是与集群管理相关的API服务,例如校验pod、services、replication controller的配置并存储到后端的etcd server上。下面我们分别对其启动过程、关键代...原创 2019-02-17 20:22:30 · 2279 阅读 · 0 评论 -
kubernetes开发指南(REST&API)(一)
REST简介REST(representational state transfer)是由roy博士在他的论文中提出的一个术语,rest本身只是为分布式超媒体系统设计的一种架构风格,而不是标准。基于web的架构实际上就是各种规范的集合,这些规范共同组成了web架构,比如HTTP、客户端服务器模式都是规范。每当我们在原有规范的基础上增加新的规范时,就会形成新的架构,而rest正是这样一种架构...原创 2019-02-16 21:58:45 · 5877 阅读 · 0 评论 -
为什么要用kubernetes
使用k8s的理由很多,最根本的一个理由就是:IT从来都是由一个新技术驱动的行业。 docker这个新兴的容器化技术当前已经被很多公司所采用,其从单机走向集群也称为必然,而云计算的蓬勃发展正在加速这一进程。kubernetes作为当前唯一被业界广泛认可和看好的docker分布式系统解决方案,可以预见,会有大量的新系统选择它,不管这些系统是运行在企业本地服务器还是被托管到公有云上。那...原创 2019-02-16 15:36:36 · 3396 阅读 · 4 评论 -
转载《美团容器平台架构及容器技术实践》
文章转载处:https://www.kubernetes.org.cn/4823.html 背景:美团的容器集群管理平台叫做HULK。漫威动画里的HULK在发怒时会变成“绿巨人”,它的这个特性和容器的“弹性伸缩”很像,所以我们给这个平台起名为HULK。貌似有一些公司的容器平台也叫这个名字,纯属巧合。2016年,美团开始使用容器,当时美团已经具备一定的规模,在使用容器之前就已经存在的...转载 2019-02-15 17:10:03 · 378 阅读 · 0 评论 -
Kubernetes scheduler V2草案
大家都知道目前Kubernetes的调度器在可扩展性和性能上面还存在很多不足,在业界,不管是国内外大企业还是创业的新型云服务公司在面临调度的一系列本地化需求时都会自己定制或者使用webhook机制来兼容,但仍然要面临定制后不好和官方同步改动和webhook性能太差不够灵活的问题。所以,我们对更高可扩展性的调度器需求愈来愈强烈。下面是新更新的官方第二版调度器的设计草案,因为有些设计和我们内部的调度器...翻译 2018-06-20 21:53:04 · 497 阅读 · 0 评论 -
k8s-kubectl进程源码分析
kubectl与之前的kubernetes进程不同,它不是一个后台运行的守护进程,而是kubernetes提供的一个命令行工具(CLI),它提供了一组命令来操作kubernetes集群。kubectl入口类源码位置如下:/cmd/kubectl/kubectl.gofunc main() { rand.Seed(time.Now().UTC().UnixNano()) command := ...原创 2018-06-13 17:06:32 · 1666 阅读 · 0 评论 -
k8s-kubelet进程初始化源码分析
kubelet命令的入口类源码位置如下:/cmd/kubelet/kubelet.go入口main函数如下:func main() { rand.Seed(time.Now().UTC().UnixNano()) command := app.NewKubeletCommand(server.SetupSignalHandler()) logs.InitLogs() defer logs...原创 2018-06-10 15:50:32 · 596 阅读 · 0 评论 -
k8s-kube-proxy运行机制分析
在每个Node上都会运行一个kube-proxy服务进程,这个进程可以看做service的透明代理和负载均衡器。其核心功能是将某个service的访问请求转发到后端的某个Pod上。对每一个TCP类型的service,kube-proxy都会在本地Node上建立一个socketserver来负责接收请求,然后均匀发送到后端某个Pod端口上。这个过程默认采用Round Robin负载均衡算法。此外,s...原创 2018-06-09 17:48:37 · 4504 阅读 · 0 评论 -
k8s-kubelet运行机制分析
在每个Node节点(又称minion)上都会启动一个kubelet服务进程,该进程用于处理Master节点下发到本节点的任务。管理Pod和Pod中的容器。每个kubelet进程会在API server注册节点自身信息,定期汇报节点资源使用情况。节点管理节点通过设置kubelet的启动参数--Register-node,来决定是否向API server注册自己。若该参数的值为true,则kubele...原创 2018-06-09 16:41:22 · 1255 阅读 · 0 评论 -
k8s-scheduler原理分析
scheduler在整个系统中承担了承上启下的重要功能,承上是指它负责接收controller manager创建新的Pod,为其安排一个落脚的目标Node,启下是指安置工作完成后,目标Node上的kubelet服务进程接管后继工作。也就是说scheduler的作用是通过调度算法为待调度Pod列表上的每一个Pod从Node列表中选择一个最合适的Node。k8s scheduler当前提供的默认调度...原创 2018-06-09 15:39:23 · 2426 阅读 · 0 评论 -
k8s-controller manager原理分析
controller manager作为集群内部的管理控制中心,负责集群内的Node,Pod副本,服务端点(endpoint),命名空间(namespace)等的管理,当某个Node意外宕机,CM会及时发现此故障并执行自动化修复流程,确保集群始终处于预期的工作状态。如下图所示:CM内部包含了RC,node controller,namespace controller等多个控制器,每种控制器都负责...原创 2018-06-09 12:03:36 · 5551 阅读 · 0 评论 -
k8s-API server原理分析
我们都知道, k8s的API server核心功能是提供了k8s各类资源对象(Pod,RC,service)的增,删,改,查及HTTP REST接口。server是通过一个名为kube-apiserver的进程提供服务。该进程运行在master节点上,默认情况下,在本机8080端口提供REST服务。通常我们可以通过命令行工具kubectl来与API server交互。它们之间的接口是RES...原创 2018-06-09 10:57:57 · 13040 阅读 · 0 评论 -
k8s安装与配置
一、k8s安装最简单的安装方法是使用yum install kubernetes命令,但仍需修改各组件的启动参数,才能完成配置。也可以下载二进制包,手动配置安装。k8s master节点安装部署etcd,kube-apiserver,kube-controller-manager,kube-scheduler服务进程,我们使用kubectl作为客户端与master进行交互操作。在工作Node上仅需...原创 2018-06-08 22:10:20 · 1021 阅读 · 0 评论 -
k8s基本概念与术语
k8s大部分概念比如Node,Pod、RC,service等都可以看做一种资源对象,几乎所有的资源对象都可以通过k8s提供的kubectl工具执行增,删,改,查等操作并将其保存在etcd中持久化存储。1.mastermaster指的是集群控制节点,来负责整个集群的管理和控制,基本上k8s的所有控制命令都是发给它。我们后面执行的命令基本都是在master节点上运行的。通常它会占据一个独立的x86服务...原创 2018-06-08 19:47:59 · 11461 阅读 · 1 评论 -
k8s简单实例-java web tomcat
此java web应用简单,是一个运行在Tomcat的Web App。如下图所示:通过浏览器http协议访问此应用,会显示一个表格的页面,数据来自数据库。此应用需要启动两个容器,web app容器和my sql容器,并且web app容器需要访问mysql容器。在docker时代,假设我们再一个宿主机上启动了这两个容器,则我们需要将mysql容器的IP地址通过环境变量的方式注入web app容器中...原创 2018-06-08 12:12:01 · 8983 阅读 · 6 评论 -
kubernetes是什么
首先,它是全新的基于容器技术(docker,rocket)的分布式架构领先方案 。是谷歌保密了十几年的秘密武器-borg的一个开源版本。borg是谷歌内部使用的大规模集群管理系统。其次,kubernetes的设计思想是全自动管理,不必再费心于负载均衡器的选型和部署实施问题,不必再考虑引入或自己开发一个复杂的服务管理框架,也不必头疼于服务监控和故障处理模块的开发,将精力更加集中于业务本身,由于k8s...原创 2018-06-08 00:05:25 · 879 阅读 · 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 · 997 阅读 · 0 评论 -
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 评论 -
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 · 913 阅读 · 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 · 1982 阅读 · 0 评论 -
hadoop伪分布式模式实现
一台机器的各个进程上运行hadoop多个模块,但并不是真正的分布式,因为是一台机器。但是HDFS和MapReduce,还有yarn等模块都运行起来了。因此掌握伪模式的配置较为重要。一、创建用户使用hadoop框架useradd hadooppasswd hadoop然后给hadoop以root的权限,这样比较方便,当然真正配置分布式时不能给这么大权限。vim /etc/sudoers添加如下ro...原创 2018-04-12 21:01:39 · 2001 阅读 · 0 评论 -
关系型数据库 VS 非关系型数据库
转载于:https://blog.csdn.net/lzj3462144/article/details/70973368一、关系型数据库?1.概念 关系型数据库是指采用了关系模型来组织数据的数据库。简单来说,关系模式就是二维表格模型。主要代表:SQL Server,Oracle,Mysql,PostgreSQL。2.优点(1).容易理解,二维表的结构非常贴近现实世界,二维表格,容易理解。(2)使...转载 2018-04-15 17:30:21 · 435 阅读 · 0 评论 -
YARN架构简介
Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器。它的基本设计思想是将MRv1中的JobTracker拆分成了两个独立的服务:一个全局的资源管理器ResourceManager和每个应用程序特有的ApplicationMaster。其中ResourceManager负责整个系统的资源管理和...原创 2018-05-28 21:42:11 · 587 阅读 · 0 评论 -
MapReduce和YARN的区别和联系
Hadoop 的最常见用法之一是 Web 搜索。虽然它不是唯一的软件框架应用程序,但作为一个并行数据处理引擎,它的表现非常突出。Hadoop 最有趣的方面之一是 Map and Reduce 流程,它受到Google开发的启发。这个流程称为创建索引,它将 Web爬行器检索到的文本 Web 页面作为输入,并且将这些页面上的单词的频率报告作为结果。然后可以在整个 Web 搜索过程中使用这个结果从已定义...原创 2018-05-28 22:08:13 · 4351 阅读 · 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 · 2441 阅读 · 0 评论 -
Kubernetes简介
Kubenetes(k8s)是一款由Google开发的开源的容器编排工具,在Google使用已经超过15年。那么k8s是用来解决集群容器运行时的什么问题呢?调度需要确保应用程序能够运行在它应该运行的地方。将应用运行在集群中正确的主机上对你的应用程序而言是很重要的一件事情,因为并不是集群中所有主机都是一样的。负载均衡需要保证来自客户端的负载(请求)能够均匀的分布到集群的节点当中。这对于你的应用程序能...原创 2018-05-30 10:40:04 · 688 阅读 · 0 评论 -
kubernetes组件与核心概念介绍
节点(Node):一个节点是一个运行 Kubernetes 中的主机。作为Kubernetes worker,通常称为Minion。每个节点都运行如下Kubernetes关键组件:Kubelet:是主节点代理。Kube-proxy:Service使用其将链接路由到Pod,如上文所述。Docker或Rocket:Kubernetes使用的容器技术来创建容器。容器组(Pod):一个 Pod 对应于由若...原创 2018-05-30 11:40:45 · 2416 阅读 · 0 评论 -
分布式系统的Raft算法
过去, Paxos一直是分布式协议的标准,但是Paxos难于理解,更难以实现,Google的分布式锁系统Chubby作为Paxos实现曾经遭遇到很多坑。来自Stanford的新的分布式协议研究称为Raft,它是一个为真实世界应用建立的协议,实现分布式系统数据的可用性和一致性,主要注重协议的落地性和可理解性。在了解Raft之前,我们先了解Consensus一致性这个概念,它是指多个服务器在状态达成一...转载 2018-05-30 16:05:40 · 402 阅读 · 0 评论 -
ETCD简介
随着CoreOS和Kubernetes等项目在开源社区日益火热,它们项目中都用到的etcd组件作为一个高可用、强一致性的服务发现存储仓库,渐渐为开发人员所关注。etcd是一个高可用的键值存储系统,主要用于共享键值仓库和服务发现。etcd是由CoreOS开发并维护的,灵感来自于 ZooKeeper 和 Doozer,它使用Go语言编写,并通过Raft一致性算法处理日志复制以保证强一致性。Raft是一...转载 2018-05-30 17:28:48 · 1446 阅读 · 0 评论 -
docker进入容器的四种方法
在使用Docker创建了容器之后,大家比较关心的就是如何进入该容器了,其实进入Docker容器有好几多种方式,这里我们就讲一下常用的几种进入Docker容器的方法。进入Docker容器比较常见的几种做法如下:1.使用docker attach2.使用SSH3.使用nsenter4.使用exec目前最为常用的是第四种,exec一、使用docker attach进入Docker容器创建一个守护态的Do...原创 2018-05-31 14:35:37 · 43783 阅读 · 2 评论 -
MapReduce和YARN区别
原hadoop框架中MapReduce的问题从上图中可以清楚的看出原 MapReduce 程序的流程及设计思路:1.首先用户程序 (JobClient) 提交了一个 job,job 的信息会发送到 Job Tracker 中,Job Tracker 是 Map-reduce 框架的中心,他需要与集群中的机器定时通信 (heartbeat), 需要管理哪些程序应该跑在哪些机器上,需要管理所有 job...转载 2018-05-31 18:42:41 · 8975 阅读 · 2 评论 -
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 · 252 阅读 · 0 评论