暂无个人介绍
useradd-g组名用户名(功能描述添加新用户到某个组)cal[选项](功能描述不加选项,显示本月日历)useradd用户名(功能描述添加新用户)注用户组必须存在,如果不存在则会报当从root用户切换到普通用户的时候不需要输入密码,而从普通用户切换到其他普通的用户或者root用户是需要输入密码的。su用户名称(功能描述切换用户,修改完毕,现在可以用ayy帐号登录,然后用命令sudo,即可获得root权限进行操作。(2)userdel-r用户名(功能描述用户和用户主目录,都删除)(2)whoami(功能描述显示登录用户的用户名以及登陆时间)(1)userdel用户名(功能描述删除用户但保存用户
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同 Linux 系统对用户组的规定有所不同, 如Linux下的用户属于与它同名的用户组,Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做 了不同的规定。[ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前 提条件是对该文件所在的目录有写权第一种方式变更权限 chmod [{ugoa}{±=}{rwx}] 文件或目录。经验技巧 u:所有者 g:所有组 o:其他人 a:所有人(
chgrp [最终用户组] [文件或目录] (功能描述:改变文件或者目录的所属组)第一种方式 chmod [{ugoa}{±=}{rwx}] 文件或目录。第一种方式 chmod [{ugoa}{±=}{rwzip [选项] XXX.zip 将要压缩的内容 (功能描述:压缩文件和目录的命令)zip 压缩命令在windows/linux都通用,可以压缩目录且保留源文件。gzip 文件 (功能描述:压缩文件令下。linux常用命locate 指令利用事先建立的系统中所有文件名称及路径的 locate 数据库实现快速定位给 定的文件。Locate 指令无需遍历整个文件系统,查询速度较快。为了保
挂载到home下的pig,这样的话凡是放到pig下面的文件都是存到sdb1里,而不会占用sda的内存,当把sdb1的卸载之后,在sdb1里的文件也就没有了。o create a new empty DOS partition table (创建一个新的空DOS分区表)G create an IRIX (SGI) partition table (创建IRIX(SGI)分区表)g create a new empty GPT partition table (创建新的空GPT分区表)......
tar [选项] XXX.tar.gz 将要打包进去的内容 (功能描述:打包目录,压缩后的 文件格式.tar.gz)du 目录/文件 (功能描述:显示目录下每个子目录的磁盘使用情况)du: disk usage 磁盘占用情况。详细的请看我之前发的博客。linux常用命令下。linux常用命令中。linux常用命令上。...............对于Linux用户来讲,不论有几个分区,分别分给哪一个目录使用,它总归就是一个根 目录、一个独立且唯一的文件结构。Linux中每个分区都是用来组成整个文件系统的一部分,它在用一种叫做“挂载”的处理 方法,它整个文件系统中包含了一整套的文件和目录,并将一
这时候没有了sshd守护进程了,那么远程登录就都登录不上了,只有再把sshd守护进程开启才可以再次远程登录,如果没有开启sshd守护进程,把所有的root进程的远程登录关掉,那么只能用主机操作了。比如将sshd全部杀死,这样的话远程登录的全部停了,而且也不能再次远程登录了,只能在主机上打开sshd守护进程才可以,这个就不演示了。killall 进程名称 (功能描述:通过进程名称杀死进程,也支持通配符,这 在系统因负载过大而变得很慢时很有用)linux常用命令下。linux常用命令中。linux常用命令上。.netstat –nlp | grep 端口号 (功能描述:查看网络端口号占用情况)ne
变量 = [生成数据的规则 for 临时变量 in xxx if xxx] 每循环一次,并且if条件为True,生成一个数据 变量 = [生成数据的规则 for 临时变量 in xxx for j in xxx] 第二个for 循环 循环一次,生成一个数据 补充: 字典推导式 变量 = {生成字典的规则 for 临时变量 in xx} my_dict = {key: value for i in range(3)}.........
文件的作用: 可以永久的保存数据. 文件在硬盘中存储的格式是二进制. 打开文件 读写文件 关闭文件 打开文件, 是文件从硬盘中存到内存中 open(file, mode=‘r’, encoding) file 要操作的文件名字, 类型是 str mode, 文件打开的方式, r(read) 只读打开, w(write) 只写打开 a(append) 追加打开 encoding 文件的编码格式, 常见的编码格式有两种, 一种是gbk, 一种是utf-8 返回值, 文件对象, 后续所有的文件操作,都需要通
面向对象和面向过程,是两种编程思想. 编程思想是指对待同一个问题,解决问题的套路方式.面向过程: 注重的过程,实现的细节.亲力亲为.面向对象: 关注的是结果, 偷懒.类和对象,是面向对象中非常重要的两个概念object 是所有的类基类,即最初始的类class 类名(object): 类中的代码PEP8代码规范:类定义的前后,需要两个空行 创建的对象地址值都不一样如dog和dog1的地址就不一样,dog的地址为2378043254528dog1的地址为2378044849840 8.类内部操作属性 sel
称为类 B 继承类 A 特点: B类的对象可以使用 A类的属性和方法 优点: 代码复用.重复相同的代码不用多次书写. 名词: 类A: 父类 基类 类B: 子类 派生类 2. 单继承和多层继承[理解] 单继承: 如果一个类只有一个父类,把这种继承关系称为单继承 多继承: 如果一个类有多个父类,把这种继承关系称为多继承 多层继承: C–> B --> A 3. 子类重写父类的同名方法[掌握] 重写: 子类定义和父类名字相同的方法. 为什么重写: 父类中的方法,不能满足子类对象的需求,所以
import后面只能跟包名不能跟 .包名 如果一个模块被import过,Python 会将导入的模块缓存在sys.modules字典里缓存起来,再次导入的时候不会重新执行导入动作,直接从缓存里取。反之,如果我们从sys.modules里把导入的模块删除,则再次import会再次触发模块导入动作。“os — 多种操作系统接口”, “os.path — 常用路径操作”, “re — 正则表达式操作”, “datetime — 基本日期和时间类型”, “heapq — 堆队列算法”, “enum — 对枚举的支持
程序代码为什么会报错?因为不符合语法,因为python的作者在代码中使用了if判断,如果除数为0,就会在代码中抛出异常错误,抛出异常raise异常对象#当程序代码遇到raise的时候,程序就报错了异常对象=异常类(参数)自定义异常类,继承Exception或者BaseException选择书写,定义init__方法,定义__str方法在合适的时机抛出异常对象即可httpshttpshttpshttpshttpshttpshttpshttps。............
在Python中用关键字import来引入某个模块,比如要引用模块math,就可以在文件最开始的地方用import math来引入想一想:为什么必须加上模块名调用呢?因为可能存在这样一种情况:在多个模块中含有相同名称的函数,此时如果只是通过函数名来调用,解释器无法知道到底要调用哪个函数。所以如果像上述这样引入模块的时候,调用函数必须加上模块名通过这种方式引入的时候,调用函数时只能给出函数名,不能给出模块名,但是当两个模块中含有相同名称函数的时候,后面一次引入会覆盖前一次引入。也就是说假如模块A中有函数fun
面向对象开发的一般方式、搭建框架代码、实现添加学生的功能、1. 使用 input 获取学生的信息2. 使用学生信息,创建学生对象3. 将学生对象添加的字典中、删除/修改/查询 学生1. 使用 input 输入学生学号2. 判断学生信息是否存在3. 存在进行操作、保存、读取读取文件,一行内容就是一个学生信息readlines 读取所有行['11,aa,18,m\n', '22,bb,16,f\n']将列表中的每一项数据转换为对象Student(id, name, age, gender)'11,aa,18,m
采用 bash 或 sh+脚本的相对路径或绝对路径(不用赋予脚本+x 权限)、采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)、在脚本的路径前加上“.”或者 source(了解)原因: 前两种方式都是在当前 shell 中打开一个子 shell 来执行脚本内容,当脚本内容结束,则 子 shell 关闭,回到父 shell 中。第三种,也就是使用在脚本路径前加“.”或者 source 的方式,`可以使脚本内容在当前 shell 里执行,而无需打开子 shell!`这也是为什么我们每次要修改完
printenv他可打印全部或部分shell 环境、定义变量变量名=变量值,注意=号前后不能有空格、撤销变量unset 变量名、声明静态变量readonly 变量,注意不能 unset、在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算、变量的值如果有空格,需要使用双引号或单引号括起来、环境变量名建议大写、如果进行数值运算需要使用,需要使用shell中的运算符的表达、在vim里面""和''的区别、用vim输出全局变量和局部变量的区别.........
多条件判断(&& 表示前一条命令执行成功时,才执行后一条命令,|| 表示上一 条命令执行失败后,才执行下一条命令)、-eq 等于(equal) -ne 不等于(not equal)-lt 小于(less than) -le 小于等于(less equal)-gt 大于(greater than) -ge 大于等于(greater equal)注:如果是字符串之间的比较 ,用等号“=”判断相等;用“!=”判断不等。 -r 有读的权限(read)-w 有写的权限(write)-x 有执行的权限(execute)
“{}”在linux shell里面表示生成序列、在for循环中$*和$@的区别、注意事项: ①[ 条件判断式 ],中括号和条件判断式之间必须有空格②if 后要有空格、在中括号里面的话就不用&&(||)而是用-a(-and)(和-o(-or))、用逻辑与&&逻辑或||连接(单分支)(1)case 行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。(2)双分号“;;”表示命令序列结束,相当于 java 中的 break。 (3)最后的“*)”表示默认模式,相当于 java 中的 default。当
read是Shell内置命令,用来从标准输入中读取数据并赋值给变量。如果没有进行重定向,默认就是从键盘读取用户输入的数据;如果进行了重定向,那么可以从文件中读取数据。
dirname截取最后一个斜杠之前的路径,不包括文件名,而basename截取最后一个斜杠之后的文件名,不包括路径、 suffix 为后缀,如果 suffix 被指定了,basename 会将 pathname中的 suffix 去掉。(1)必须在调用函数地方之前,先声明函数,shell 脚本是逐行运行。不会像其它语言一样先编译。 (2)函数返回值,只能通过$?系统变量获得,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。return 后跟数值 n(0-255).......
需求实现一个每天对指定目录归档备份的脚本,输入一个目录名称(末尾不带/),将目录下所有文件按天归档保存,并将归档日期附加在归档文件名上,放在/root/archive下。需求实现一个向某个用户快速发送消息的脚本,输入用户名作为第一个参数,后面直接跟要发送的消息。脚本需要检测用户是否登录在系统中、是否打开消息功能,以及当前发送消息是否为空。后面可以加上-c选项表示归档,加上-z选项表示同时进行压缩,得到的文件后缀名为.tar.gz。这个可以查看用户在线情况,+号代表的是可以发送信息,mesg是打开的。....
记得加大写的-E,因为目前grep不支持{9}的扩展的正则的,所以需要加上-E,表示支持扩展的正则表达式。匹配任意字符,可以和^$连用,放在他们中间用,就可以将下面的代码实现,以a开头,login结尾的行。[a-c,e-f]-匹配a-c或者e-f之间的任意字符。记得加大写的-E,因为目前grep不支持{9}的扩展的正则的,所以需要加上-E,表示支持扩展的正则表达式.* 匹配什么?匹配任意字符,可以和^$连用,放在他们中间用,就可以将下面的代码实现,以a开头,login结尾的行、思考:^$ 匹配什么?匹配空行
cut 的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。awk和gawk是一样的,awk是gawk的一个软连接一个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。.........
Shell 概述、Shell 脚本入门、Shell变量、Shell特殊变量、系统预定义变量、自定义变量、运算符、expr方法、$((运算式)) 或 $[运算式]、常用判断条件、流程控制(重点)、if 判断、case 语句、for 循环、while 循环、read 读取控制台输入、系统函数、自定义函数、正则表达式入门、特殊字符、文本处理工具、cut、awk 的内置变量、归档文件、发送消息、特殊字符:^、特殊字符:$、特殊字符:.特殊字符:*、字符区间(中括号):[ ]、特殊字符:\、匹配手机号、脚本的常用执行
设置注释模板的入口Window->Preference->Java->CodeStyle->CodeTemplate然后展开Comments节点就是所有需设置注释的元素。本文将每一个元素逐一给大家介绍一下。方法(Methods)标签、覆盖方法(Overriding Methods)标签、代理方法(Delegate Methods)标签、getter方法标签、setter方法标签.........
1.在Eclipse中我们有Workspace(工作空间)和Project(工程)的概念,在 IDEA中只有Project(工程)和Module(模块)的概念。这里的对应关系为: >IDEA 官网说明: An Eclipse workspace is similar to a project in IntelliJ IDEA An Eclipse project maps to a module in IntelliJ IDEA 翻译: Eclipse 中 workspace 相当于 IDEA 中的 Pr
设置自动导包功能、设置显示行号和方法间的分隔符、忽略大小写提示、置取消单行显示 tabs 的操作、设置默认的字体、字体大小、字体行间距、修改当前主题的字体、字体大小、字体行间距、修改当前主题的控制台输出的字体及字体大小、修改代码中注释的字体颜色、设置超过指定 import 个数,改为* 、修改类头的文档注释信息、设置项目文件编码、设置当前源文件的编码、设置自动编译、设置为省电模式、设置代码水平或垂直显示.........
相信很多小伙伴一开始学习Java使用的是Eclipse软件,后面转用IDEA,会发现很多的习惯改不过来,最基本的快捷键就是一个令人头痛的东西,IDEA和Eclipse的快捷键基本完全不一样,下面教大家设置快捷为Eclipse的快捷键、、通过快捷键功能修改快捷键设置、通过指定快捷键,查看或修改其功能、导入已有的设置、常用快捷键、格式化代码(reformat code)、向上开始新的一行 (Start New Line before current)这几个操作是我手动自己改过的............
已有的常用模板、修改现有模板:Live Templates、自定义模板、1. Abbreviation:模板的缩略名称2. Description:模板的描述3. Template text:模板的代码片段4. 应用范围。比如点击Define。选择如下:它的原理就是配置一些常用代码字母缩写,在输入简写时可以出现你预定义的固定模式的代码,使得开发效率大大提高,同时也可以增加个性化。最简单的例子就是在Java中输入sout会出现System.out.println();...
程序、进程、线程、单核CPU和多核CPU的理解、并行与并发、比较创建线程的两种方式、继承方式和实现方式的联系与区别继承Thread类1) 定义子类继承Thread类。2) 子类中重写Thread类中的run方法。3) 创建Thread子类对象,即创建了线程对象。4) 调用线程对象start方法:启动线程,调用run方法。方式二:实现Runnable接口1) 定义子类,实现Runnable接口。2) 子类中重写Runnable接口中的run方法。3) 通过Thread类含参构造器创建线程对象。4) 将Runn
synchronized与Lock的对比、线程的死锁问题、JDK中用Thread.State类定义了线程的几种状态、新建,就绪,运行,阻塞,死亡、使用同步代码块、同步方法解决实现Runnable接口的线程安全问题、使用同步代码块、同步方法处理继承Thread类的方式中的线程安全问题、使用同步机制将单例模式中的懒汉式改写为线程安全的、演示线程的死锁问题、解决线程安全问题的方式三:Lock锁-JDK5.0新增、Lock是显式锁(手动开启和关闭锁,别忘记关闭锁),synchronized是隐式锁,出了作用域自动释
使用多线程的优点、Thread类、创建线程的两种方式继承Thread类、实现Runnable接口、Thread类的有关方法、线程的调度、无效的源发行版、线程的分类、Synchronized的使用方法、同步代码块、同步方法、同步机制中的锁、同步的范围、Lock(锁、不会释放锁的操作、单例设计模式之懒汉式(线程安全)、生产者/消费者问题、创建线程的方式三:实现Callable接口、创建线程的方式四:使用线程池、Lock是显式锁(手动开启和关闭锁,别忘记关闭锁),synchronized是隐式锁...
高可靠性、高扩展性、高效性、高容错性YARN架构概述、MapReduce架构概述、HDFS、YARN、MapReduce三者关系、1)NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。 2)DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。 3)Secondary NameNode(2nn):每隔一段时间对NameNode元数据备份。MapReduce将计算过程分为两个阶段:
推荐的软件为VMware,VMware可以使用户在一台计算机上同时运行多个操作系统,还可以像Windows应用程序一样来回切换。用户可以如同操作真实安装的系统一样操作虚拟机系统,甚至可以在一台计算机上将几个虚拟机系统连接为一个局域网或者连接到互联网。一台电脑本身是可以装多个操作系统的,但是做不到多个操作系统切换自如,所以我们需要一款软件帮助我们达到这个目的,不然数仓项目搭建不起来。然后点击安装即可,因为我有VMware,所以他提醒我升级,你们那边显示的是安装,然后等待安装成功即可。点我接受,然后点下一步。.
通常在工作过程中,公司中使用的真实服务器或者是云服务器,都不允许除运维人员之外的员工直接接触,因此就需要通过远程登录的方式来操作。所以,远程登录工具就是必不可缺的,目前,比较主流的有Xshell,SecureCRT等,同学们可以根据自己的习惯自行选择,以下以Xshell7为例。...
安装模板虚拟机,IP地址192.168.10.100、主机名称hadoop100、内存4G、硬盘50G、hadoop100虚拟机配置要求如下(本文Linux系统全部以CentOS-7-x86_64-DVD-2009为例)、使用yum安装需要虚拟机可以正常上网,yum安装前可以先测试下虚拟机联网情况、注意:如果Linux安装的是最小系统版,还需要安装如下工具;如果安装的是Linux桌面标准版,不需要执行如下操作、创建summer用户,并修改summer用户的密码、在/opt目录下创建文件夹,并修改所属主和所属
在XShell和Xftp连接hadoop102、hadoop103和hadoop104、配置Linux克隆机主机名称映射hosts文件,打开/etc/hosts、如何将hadoop104从磁盘删除、如何再将hadoop100添加回来、如果不小心将虚拟机hadoop100移除了、为什么不从hadoop101开始,因为一开始hadoop101留给了单台服务器操作使用,而用102,103,104搭建的是完全分布式,真正的生产集群。后面可以用101进行源码的编译...
为什么只在hadoop102上安装JDK,因为在hadoop102中安装后将JDK拷贝到hadoop103和hadoop104中,同样后面安装Hadoop的时候也是这样的操作、解压JDK到/opt/module目录下、配置好后需要source一下,重新加载一下内容、在Linux系统下的opt目录中查看软件包是否导入成功、用Xftp传输工具将JDK导入到opt目录下面的software文件夹下面、系统启动的时候就会加载/etc/profile.d这里面的文件.........
为什么只在hadoop102上安装hadoop,因为在hadoop102中安装后将hadoop拷贝到hadoop103和hadoop104中、解压hadoop到/opt/module目录下、配置好后需要source一下,重新加载一下内容、在Linux系统下的opt目录中查看软件包是否导入成功、用Xftp传输工具将hadoop导入到opt目录下面的software文件夹下面、系统启动的时候就会加载/etc/profile.d这里面的文件(1)bin目录:存放对Hadoop相关服务(hdfs,yarn,mapr
完全分布式运行模式1)准备3台客户机(关闭防火墙、静态IP、主机名称)2)安装JDK3)配置环境变量4)安装Hadoop5)配置环境变量6)配置集群7)单点启动8)配置ssh9)群起并测试集群、scp(secure copy)安全拷贝、望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)、修改脚本xsync具有执行权限、注意:如果用了sudo,那么xsync一定要给它的路径补全、创建在hadoop-3.1.3文件下面创建一个testinput文件夹、在testinput文件下创建一个word.txt
ssh文件夹下(~/.ssh)的文件功能解释、ssh连接时出现Host key verification failed的解决方法、免密登录原理、将公钥拷贝到要免密登录的目标机器上、NameNode和SecondaryNameNode不要安装在同一台服务器、ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上、Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值、.
如果集群是第一次启动`,需要在hadoop102节点格式化NameNode、注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化、在配置了ResourceManager的节点(hadoop103)启动YARN......
日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryServer、关闭NodeManager 、ResourceManager和HistoryServer、启动NodeManager 、ResourceManage和HistoryServer、各个模块分开启动/停止(配置ssh是前提)常用、整体启动/停止HDFS、整体启动/停止YARN、各个服务组件逐一启动/停止、分别启动/停止HDFS组件
Hadoop集群启停脚本(包含HDFS,Yarn,Historyserver):myhadoop.sh、查看三台服务器Java进程脚本:jpsall、分发/home/atguigu/bin目录,保证自定义脚本在三台机器上都可以使用、如果服务器在公网环境(能连接外网),可以不采用集群时间同步,因为服务器会定期和公网时间进行校准;如果服务器在内网环境,必须要配置集群时间同步,否则时间久了,会产生时间偏差,导致集群执行任务时间不同步。...
配置HDFS网页登录使用的静态用户、主机名称不要起hadoop hadoop000等特殊名称、DataNode和NameNode进程同时只能工作一个、执行命令不生效,粘贴Word中命令时,遇到-和长–没区分开。导致命令失效、jps发现进程已经没有,但是重新启动集群,提示进程已经开启、jps不生效原因:全局变量hadoop java没有生效。解决办法:需要source /etc/profile文件。、8088端口连接不上、防火墙没关闭、或者没有启动YARN...
高容错性,数据自动保存多个副本。它通过增加副本的形式,提高容错性、适合处理大数据,数据规模:能够处理数据规模达到GB、TB、甚至PB级别的数据;文件规模:能够处理百万规模以上的文件数量,数量相当之大、可构建在廉价机器上,通过多副本机制,提高可靠性、不适合低延时数据访问,比如毫秒级的存储数据,是做不到的。 无法高效的对大量小文件进行存储。存储大量小文件的话,它会占用NameNode大量的内存来存储文件目录和块信息。这样是不可取的,因为NameNode的内存总是有限的;小文件存储的寻址时间会超过读取时间,它违反
-help:-mkdir:-moveFromLocal:-copyFromLocal:从本地文件系统中拷贝文件到HDFS路径去、-put:等同于copyFromLocal,生产环境更习惯用put、-appendToFile:追加一个文件到已经存在的文件末尾、-copyToLocal:从HDFS拷贝到本地、-get:等同于copyToLocal,-ls: -cat:-chgrp、-chmod、-chown:-mkdir:-cp:-mv:-tail:-rm:-rm -r:-du:-setrep:......
参数优先级排序:(1)客户端代码中设置的值 >(2)在项目资源目录下的用户自定义配置文件(如在resources下创建的hdfs-site.xml,可以看上面的过程) >(3)服务器的自定义配置(hdfs-site.xml) >(4)服务器的默认配置(hdfs-default.xml)、CRC文件是一个校验文件,保证文件传输完整、对文件名称的修改、文件的更名和移动、目录更名、删除文件、删除空目录、删除非空目录、如果执行上面代码,下载不了文件,有可能是你电脑的微软支持的运行库少,需要安装一下微软运行库。...
(1)客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在。 (2)NameNode返回是否可以上传。 (3)客户端请求第一个 Block上传到哪几个DataNode服务器上。 (4)NameNode返回3个DataNode节点,分别为dn1、dn2、dn3。 (5)客户端通过FSDataOutputStream模块请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成。 (
查看oiv和oev命令、sz命令,从虚拟机上下载到windows上、通常情况下,SecondaryNameNode每隔一小时执行一次、一分钟检查一次操作次数,当操作次数达到1百万时,SecondaryNameNode执行一次、第一阶段:NameNode启动、第二阶段:Secondary NameNode工作、hdfs oiv -p 文件类型 -i镜像文件 -o 转换后文件输出路径、可以看出,Fsimage中没有记录块所对应DataNode,为什么?在集群启动后,要求DataNode上报数据块信息,并间隔一段