-
Linux 目录与常用linux目录操作命令
2020-05-27 14:55:12在系统的这颗树中,树根叫做/,也就是root,树根伸展出来的目录有很多,分别具备不同的功能。 / ##跟目录 /bin ##提供所有用户使用的完成基本维护任务的命令,比如ls,cat,rm,mv,cp 等等。 /boot ##存放了一些内核和...一、Linux 的文件系统
Linux 中一切皆文件,无论何种格式,都是文件。
Windows中,系统存放在不同的驱动器盘符上,有C盘、D盘等。而在Linux中,文件系统包含排列在存储设备上(磁盘、其他区块存储设备),它是一个树形的结构。在系统的这颗树中,树根叫做/,也就是root,树根伸展出来的目录有很多,分别具备不同的功能。
/ ##跟目录
/bin ##提供所有用户使用的完成基本维护任务的命令,比如ls,cat,rm,mv,cp 等等。
/boot ##存放了一些内核和启动文件。
/etc ##系统和应用软件的配置文件。
/home ##普通用户的家目录。
/root ##root用户的家目录。
/sbin ##超级用户的可执行文件,一般为系统管理命令。
/dev ##设备文件
/lib ##系统最基本的共享链接库和内核模块
/tmp ##临时文件夹
/usr ##类似根目录的目录,但下属文件多是用户级的,一般与具体系统无瓜。(对应的/ 下多是系统级别。)- 虚拟文件系统 /proc
该目录挂载了一个虚拟文件系统,以虚拟文件的形式映射系统与进程在内存中的运行时信息。
发现mac系统里是不存在这个目录的。 - /var目录
该目录是用来存放数据文件包括程序数据与日志等;线上使用中,一般只将日志存放于此。
我看不懂的部分
通过rsyslog记录系统级日志。
配置文件为/etc/rsyslog.conf。看/var/log/messages的配置
OOM Kill log
Linux 会监控内存使用情况,通过OOM killer 的机制,在内存不足时, 计算进程的优先级,杀死优先级最高的进程释放内存。
而OOM kill的三个步骤“发现内存不足”、“计算优先级”、“选择进程kill”,都会记录在/var/log/messages中
还需要注意不同Linux 版本存在发行版本、内核版本的区别,造成的目录结构的差异。
一般将与他人分享的文件 放置于/usr/local 中。而私人文件,放置于/Users/username自己的家目录中。
二、Linux 常用的目录操作指令 - 路径
绝对路径:路径写法有根目录写起"/" 。
/Users/dad/desktop
相对路径:路径的写法由“当前所在的目录写起”,如在"/home/abc1"下,希望到达“/home/abc2”,可以直接书写“cd …/abc2”。
路径的一些特殊符号。
. ## 代表此层目录,即当前所在目录
… ## 代表上层目录。
~ ## 代表用户的“家目录”
2. 常用的目录操作命令
基本命令格式
commands options arguments
命令是必须的 参数与对象不是必须的。 三者之间需要用空格隔开。
command: ls, cd, rm, mv …
options: -i, -a …
arguments: 对象常见命令
ls ## 列出所在目录下文件
pwd ## 打印当前目录
cd ## 进入指定目录
mkdir ## 创建新的目录(默认为所在目录下)
touch ## 创建文件
cat ##查看文本文件
mv ## 移动和重命名 (当被移动文件指定目录不存在时,即替换名称)
rm ## 删除文件
cp ## 拷贝粘贴
tar ## tape archive 压缩或者解压缩文件
ln ## link 链接文件更多资料可以看这里哦 http://www.makeru.com.cn/course/1861.html?s=143793
- 虚拟文件系统 /proc
-
PLC与变频器相互转化资料
2009-12-28 20:23:071、先将PLC程序传入程序控制器中,只连接启动与停止开关,先不与变频器相连接,以免输出电压不正确导致变频器出错。 2、按下启动按钮,看是否按照规定曲线运行,如果运行正确则证明PLC部分调试成功。 3、连接PLC的... -
Oracle数据库精讲与疑难解析part2
2013-07-29 11:26:32第6章 有始有终——数据库的启动与关闭 6.1 数据库启动 6.1.1 数据库启动原理 6.1.2 数据库启动 6.1.3 数据库启动疑难解析 6.2 数据库关闭 6.2.1 数据库关闭原理 6.2.2 数据库的关闭... -
Oracle数据库精讲与疑难解析part1
2013-07-29 11:24:41第6章 有始有终——数据库的启动与关闭 6.1 数据库启动 6.1.1 数据库启动原理 6.1.2 数据库启动 6.1.3 数据库启动疑难解析 6.2 数据库关闭 6.2.1 数据库关闭原理 6.2.2 数据库的关闭... -
现代交换原理与通信网技术 (卞佳丽
2021-01-20 06:00:2626.模拟中偺接口与模拟用户接口有什么区别?完成哪些功能? 答:应用范围不一样: 模拟用户接口是社控交挟设备连接模拟话杌的接口电路,实际上是樸拟电和数宁电路 间的接口ε而模拟中繼口是用于连接模拟中緒线的接口,常... -
java面试宝典2011整理有答案
2011-11-09 13:36:0641、运行时异常与一般异常有何异同? 27 42、error和exception有什么区别? 28 43、Java中的异常处理机制的简单原理和应用。 28 44、请写出你最常见到的5个runtime exception。 28 45、JAVA语言如何进行异常处理,... -
python常用命令读写_大数据基础【Task 3】HDFS常用命令/API+上传下载过程
2021-01-14 16:09:08认识HDFSHDFS是用来解决什么问题的HDFS设计与架构熟悉hdfs常用命令Python操作HDFS的其他API观察上传后的文件,上传大于128M的文件与小于128M的文件有何区别?启动HDFS后,会分别启动NameNode/DataNode/...认识HDFSHDFS是用来解决什么问题的
HDFS设计与架构
熟悉hdfs常用命令
Python操作HDFS的其他API
观察上传后的文件,上传大于128M的文件与小于128M的文件有何区别?
启动HDFS后,会分别启动NameNode/DataNode/SecondaryNameNode,这些进程的的作用分别是什么?
NameNode是如何组织文件中的元信息的,edits log与fsImage的区别?使用hdfs oiv命令观察HDFS上的文件的metadata
HDFS文件上传下载过程,源码阅读与整理。
1.认识HDFS
HDFS是用来解决什么问题的
Hadoop 附带了一个名为 HDFS(Hadoop分布式文件系统)的分布式文件系统,专门存储超大数据文件,为整个Hadoop生态圈提供了基础的存储服务。
HDFS专为解决大数据存储问题而产生的,其具备了以下特点:
1) HDFS文件系统可存储超大文件
HDFS文件的大小可以大于网络中任意一个磁盘的容量,文件的所有块并不需要存储在一个磁盘上,因此可以利用集群上任意一个磁盘进行存储,由于具备这种分布式存储的逻辑,所以可以存储超大的文件,通常G、T、P级别。
2) 一次写入,多次读取
一个文件经过创建、写入和关闭之后就不需要改变,这个假设简化了数据一致性的问题,同时提高数据访问的吞吐量。
3) 运行在普通廉价的机器上
Hadoop的设计对硬件要求低,无需昂贵的高可用性机器上,因为在HDFS设计中充分考虑到了数据的可靠性、安全性和高可用性。
不适用于HDFS的场景:
1) 低延迟
HDFS不适用于实时查询这种对延迟要求高的场景,例如:股票实盘。往往应对低延迟数据访问场景需要通过数据库访问索引的方案来解决,Hadoop生态圈中的Hbase具有这种随机读、低延迟等特点。
2) 大量小文件
对于Hadoop系统,小文件通常定义为远小于HDFS的block size(默认64MB)的文件,由于每个文件都会产生各自的MetaData元数据,Hadoop通过Namenode来存储这些信息,若小文件过多,容易导致Namenode存储出现瓶颈。
3) 多用户更新
为了保证并发性,HDFS需要一次写入多次读取,目前不支持多用户写入,若要修改,也是通过追加的方式添加到文件的末尾处,出现太多文件需要更新的情况,Hadoop是不支持的。
针对有多人写入数据的场景,可以考虑采用Hbase的方案。
4) 结构化数据
HDFS适合存储半结构化和非结构化数据,若有严格的结构化数据存储场景,也可以考虑采用Hbase的方案。
5) 数据量并不大
通常Hadoop适用于TB、PB数据,若待处理的数据只有几十GB的话,不建议使用Hadoop,因为没有任何好处。
HDFS设计与架构
HDFS是一个主/从(Master/Slave)体系架构,由于分布式存储的性质,集群拥有两类节点NameNode和DataNode。
NameNode(名字节点):系统中通常只有一个,中心服务器的角色,管理存储和检索多个DataNode的实际数据所需的所有元数据。
DataNode(数据节点):系统中通常有多个,是文件系统中真正存储数据的地方,在NameNode统一调度下进行数据块的创建、删除和复制。
2.熟悉hdfs常用命令
命令基本格式:
hadoop fs -cmd < args >
1) 打印文件列表(ls)
# 列出hdfs文件系统根目录下的目录和文件
# 标准写法:
hadoop fs -ls hdfs:/ #hdfs: 明确说明是HDFS系统路径
# 简写:
hadoop fs -ls / #默认是HDFS系统下的根目录
# 打印指定子目录:
hadoop fs -ls /package/test/ #HDFS系统下某个目录
# 列出hdfs文件系统所有的目录和文件
hadoop fs -ls -R /
2) 上传文件、目录(put、copyFromLocal)
put用法:
上传新文件:
hdfs fs -put file:/root/test.txt hdfs:/ #上传本地test.txt文件到HDFS根目录,HDFS根目录须无同名文件,否则“File exists”
hdfs fs -put test.txt /test2.txt #上传并重命名文件。
hdfs fs -put test1.txt test2.txt hdfs:/ #一次上传多个文件到HDFS路径。
hdfs file的父目录一定要存在,否则命令不会执行
上传文件夹:
hdfs fs -put mypkg /newpkg #上传并重命名了文件夹。
上传目录
hdfs dir 一定要存在,否则命令不会执行
hadoop fs -put < local file or dir >...< hdfs dir >
覆盖上传:
hdfs fs -put -f /root/test.txt / #如果HDFS目录中有同名文件会被覆盖
从键盘读取输入到hdfs file中,按Ctrl+D结束输入,hdfs file不能存在,否则命令不会执行
hadoop fs -put - < hdsf file>
copyFromLocal用法:与put相类似,也可以从键盘读取输入到hdfs file中
上传文件并重命名:
hadoop fs -copyFromLocal file:/test.txt hdfs:/test2.txt
覆盖上传:
hadoop fs -copyFromLocal -f test.txt /test.txt
moveFromLocal:与put相类似,命令执行后源文件 local src 被删除,也可以从从键盘读取输入到hdfs file中
hadoop fs -moveFromLocal < local src > ... < hdfs dst >
3) 下载文件、目录(get、copyToLocal)
get用法:
拷贝文件到本地目录:
hadoop fs -get hdfs:/test.txt file:/root/
拷贝文件并重命名,可以简写:
hadoop fs -get /test.txt /root/test.txt
# local file不能和 hdfs file名字不能相同,否则会提示文件已存在,没有重名的文件会复制到本地
拷贝多个文件或目录到本地时,本地要为文件夹路径
hadoop fs -get < hdfs file or dir > ... < local dir >
# 注意:如果用户不是root, local 路径要为用户文件夹下的路径,否则会出现权限问题,
copyToLocal用法:与get类似
拷贝文件到本地目录:
hadoop fs -copyToLocal hdfs:/test.txt file:/root/
拷贝文件并重命名,可以简写:
hadoop fs -copyToLocal /test.txt /root/test.txt
4) 拷贝文件、目录(cp)
从本地到HDFS,同put,目标文件不能存在,否则命令不能执行
hadoop fs -cp file:/test.txt hdfs:/test2.txt
从HDFS到HDFS
hadoop fs -cp hdfs:/test.txt hdfs:/test2.txt
hadoop fs -cp /test.txt /test2.txt
目标文件夹要存在,否则命令不能执行
hadoop fs -cp < hdfs file or dir >... < hdfs dir >
5) 移动文件(mv)
hadoop fs -mv hdfs:/test.txt hdfs:/dir/test.txt
hadoop fs -mv /test.txt /dir/test.txt
源路径有多个时,目标路径必须为目录,且必须存在。
hadoop fs -mv < hdfs file or dir >... < hdfs dir >
注意:跨文件系统的移动(local到hdfs或者反过来)都是不允许的
6) 删除文件、目录(rm)
删除指定文件
hadoop fs -rm /a.txt
删除全部txt文件
hadoop fs -rm /*.txt
递归删除全部文件和目录
hadoop fs -rm -R /dir/
每次可以删除多个文件或目录
hadoop fs -rm < hdfs file > ...
hadoop fs -rm -r < hdfs dir>...
7) 读取文件(cat、tail)
hadoop fs -cat /test.txt #以字节码的形式读取
hadoop fs -tail /test.txt
8) 创建空文件(touchz)
hadoop fs - touchz /newfile.txt
9) 创建文件夹(mkdir)
hadoop fs -mkdir /newdir /newdir2 # 可以同时创建多个,只能一级一级的建目录,父目录不存在的话使用这个命令会报错
hadoop fs -mkdir -p /newpkg/newpkg2/newpkg3 # 同时创建父级目录,所创建的目录如果父目录不存在就创建该父目录
10) 获取逻辑空间文件、目录大小(du)
hadoop fs - du / #显示HDFS根目录中各文件和文件夹大小
hadoop fs -du -h / #以最大单位显示HDFS根目录中各文件和文件夹大小,文件的大小用方便阅读的形式表示,例如用64M代替67108864
hadoop fs -du -s / #仅显示HDFS根目录大小。即各文件和文件夹大小之和
11)合并文件(getmerge)
将hdfs指定目录下所有文件排序后合并到local指定的文件中,文件不存在时会自动创建,文件存在时会覆盖里面的内容
hadoop fs -getmerge < hdfs dir > < local file >
加上nl后,合并到local file中的hdfs文件之间会空出一行
hadoop fs -getmerge -nl < hdfs dir > < local file >
12)统计文件(count)
统计hdfs对应路径下的目录个数,文件个数,文件总计大小
显示为目录个数,文件个数,文件总计大小,输入路径
hadoop fs -count < hdfs path >
13)text
将文本文件或某些格式的非文本文件通过文本格式输出
hadoop fs -text < hdsf file>
14)setrep
改变一个文件在hdfs中的副本个数,上述命令中数字3为所设置的副本个数,-R选项可以对一个人目录下的所有目录+文件递归执行改变副本个数的操作
hadoop fs -setrep -R 3 < hdfs path >
13.stat
hadoop fs -stat [format] < hdfs path >
返回对应路径的状态信息
[format]可选参数有:%b(文件大小),%o(Block大小),%n(文件名),%r(副本个数),%y(最后一次修改日期和时间)
可以这样书写hadoop fs -stat %b%o%n < hdfs path >,不过不建议,这样每个字符输出的结果不是太容易分清楚
14)tail
在标准输出中显示文件末尾的1KB数据
hadoop fs -tail < hdfs file >
15)archive
hadoop archive -archiveName name.har -p < hdfs parent dir > < src >* < hdfs dst >
命令中参数name:压缩文件名,自己任意取;< hdfs parent dir > :压缩文件所在的父目录;< src >:要压缩的文件名;< hdfs dst >:压缩文件存放路径
*示例:hadoop archive -archiveName hadoop.har -p /user 1.txt 2.txt /des
示例中将hdfs中/user目录下的文件1.txt,2.txt压缩成一个名叫hadoop.har的文件存放在hdfs中/des目录下,如果1.txt,2.txt不写就是将/user目录下所有的目录和文件压缩成一个名叫hadoop.har的文件存放在hdfs中/des目录下
显示har的内容可以用如下命令:
hadoop fs -ls /des/hadoop.jar
显示har压缩的是那些文件可以用如下命令
hadoop fs -ls -R har:///des/hadoop.har
注意:har文件不能进行二次压缩。如果想给.har加文件,只能找到原来的文件,重新创建一个。har文件中原来文件的数据并没有变化,har文件真正的作用是减少NameNode和DataNode过多的空间浪费。
16)balancer
hdfs balancer
如果管理员发现某些DataNode保存数据过多,某些DataNode保存数据相对较少,可以使用上述命令手动启动内部的均衡过程
17)dfsadmin
hdfs dfsadmin -help
管理员可以通过dfsadmin管理HDFS,用法可以通过上述命令查看
hdfs dfsadmin -report
显示文件系统的基本数据
hdfs dfsadmin -safemode < enter | leave | get | wait >
enter:进入安全模式;leave:离开安全模式;get:获知是否开启安全模式;
wait:等待离开安全模式
18)distcp
用来在两个HDFS之间拷贝数据
参考:
3.Python操作HDFS的其他API
使用python操作hdfs本身并不难,只不过是把对应的shell 功能“翻译”成高级语言,网上大部分使用的是
pyhdfs:官方文档
hdfs:官方文档
选一种就可以。也可以两个都试一下。
首先要安装pip:
yum install python-pip
pip install --upgrade pip # 升级
然后安装pyhdfs/hdfs:
pip install pyhdfs/hdfs
以hdfs为例,尝试参考资料中的基本命令。
4.观察上传后的文件,上传大于128M的文件与小于128M的文件有何区别?
到浏览器里看会发现:
两个文件的Block Size都是128M。无论多大的文件在HDFS中都是以Block为单位存储的。大于128MB会被分为两个block存储,小于128MB就是1个block存储。
我们在HDFS中存储数据是以块(block)的形式存放在DataNode中的,块(block)的大小可以通过设置dfs.blocksize来实现;
在Hadoop2.x的版本中,文件块的默认大小是128M,老版本中默认是64M;
寻址时间:HDFS中找到目标文件块(block)所需要的时间。
原理:
文件块越大,寻址时间越短,但磁盘传输时间越长;
文件块越小,寻址时间越长,但磁盘传输时间越短。一、为什么HDFS中块(block)不能设置太大,也不能设置太小?
1. 如果块设置过大,
一方面,从磁盘传输数据的时间会明显大于寻址时间,导致程序在处理这块数据时,变得非常慢;
另一方面,mapreduce中的map任务通常一次只处理一个块中的数据,如果块过大运行速度也会很慢。
2. 如果块设置过小,
一方面存放大量小文件会占用NameNode中大量内存来存储元数据,而NameNode的内存是有限的,不可取;
另一方面文件块过小,寻址时间增大,导致程序一直在找block的开始位置。
因而,块适当设置大一些,减少寻址时间,那么传输一个由多个块组成的文件的时间主要取决于磁盘的传输速率。
二、 HDFS中块(block)的大小为什么设置为128M?
1. HDFS中平均寻址时间大概为10ms;
2. 经过前人的大量测试发现,寻址时间为传输时间的1%时,为最佳状态;
所以最佳传输时间为10ms/0.01=1000ms=1s
3. 目前磁盘的传输速率普遍为100MB/s;
计算出最佳block大小:100MB/s x 1s = 100MB
所以我们设定block大小为128MB。
ps:实际在工业生产中,磁盘传输速率为200MB/s时,一般设定block大小为256MB
磁盘传输速率为400MB/s时,一般设定block大小为512MB
5.启动HDFS后,会分别启动NameNode/DataNode/SecondaryNameNode,这些进程的的作用分别是什么?
NameNode主要是用来保存HDFS的元数据信息,比如命名空间信息,块信息等。当它运行的时候,这些信息是存在内存中的。但是这些信息也可以持久化到磁盘上。Namenode 管理着文件系统的Namespace。它维护着文件系统树(filesystem tree)以及文件树中所有的文件和文件夹的元数据(metadata)。
Datanode是文件系统的工作节点,他们根据客户端或者是namenode的调度存储和检索数据,并且定期向namenode发送他们所存储的块(block)的列表。
集群中的每个服务器都运行一个DataNode后台程序,这个后台程序负责把HDFS数据块读写到本地的文件系统。当需要通过客户端读/写某个 数据时,先由NameNode告诉客户端去哪个DataNode进行具体的读/写操作,然后,客户端直接与这个DataNode服务器上的后台程序进行通 信,并且对相关的数据块进行读/写操作。
Secondary NameNode是一个用来监控HDFS状态的辅助后台程序。就想NameNode一样,每个集群都有一个Secondary NameNode,并且部署在一个单独的服务器上。Secondary NameNode不同于NameNode,它不接受或者记录任何实时的数据变化,但是,它会与NameNode进行通信,以便定期地保存HDFS元数据的 快照。由于NameNode是单点的,通过Secondary NameNode的快照功能,可以将NameNode的宕机时间和数据损失降低到最小。同时,如果NameNode发生问题,Secondary NameNode可以及时地作为备用NameNode使用。
6.NameNode是如何组织文件中的元信息的,edits log与fsImage的区别?使用hdfs oiv命令观察HDFS上的文件的metadata
1)NameNode是如何组织文件中的元信息的:
2)fsimage - 它是在NameNode启动时对整个文件系统的快照
edit logs - 它是在NameNode启动后,对文件系统的改动序列
只有在NameNode重启时,edit logs才会合并到fsimage文件中,从而得到一个文件系统的最新快照。但是在产品集群中NameNode是很少重启的,这也意味着当NameNode运行了很长时间后,edit logs文件会变得很大。
参考:
3)命令hdfs oiv用于将fsimage,edits文件转换成其他格式的,如文本文件、XML文件。
该命令需要以下参数:
必须参数:
-i,–inputFile 输入FSImage文件.
-o,–outputFile 输出转换后的文件,如果存在,则会覆盖
可选参数:
-p,–processor 将FSImage文件转换成哪种格式: (Ls|XML|FileDistribution).默认为Ls.
-h,–help 显示帮助信息
例子1:
hdfs oiv -i /data1/hadoop/dfs/name/current/fsimage_0000000000019372521 -o /home/hadoop/fsimage.txt
执行后查看more /home/Hadoop/fsimage.txt
7.HDFS文件上传下载过程,源码阅读与整理。
参考:
-
在hdfs中创建用户目录_大数据基础【Task 3】HDFS常用命令/API+上传下载过程
2020-12-03 19:25:04认识HDFSHDFS是用来解决什么问题的HDFS设计与架构熟悉hdfs常用命令Python操作HDFS的其他API观察上传后的文件,上传大于128M的文件与小于128M的文件有何区别?启动HDFS后,会分别启动NameNode/DataNode/...- 认识HDFS
- HDFS是用来解决什么问题的
- HDFS设计与架构
- 熟悉hdfs常用命令
- Python操作HDFS的其他API
- 观察上传后的文件,上传大于128M的文件与小于128M的文件有何区别?
- 启动HDFS后,会分别启动NameNode/DataNode/SecondaryNameNode,这些进程的的作用分别是什么?
- NameNode是如何组织文件中的元信息的,edits log与fsImage的区别?使用hdfs oiv命令观察HDFS上的文件的metadata
- HDFS文件上传下载过程,源码阅读与整理。
参考: https://segmentfault.com/a/1190000002672666
参考资料:Python3调用Hadoop的API
1.认识HDFS
HDFS是用来解决什么问题的
Hadoop 附带了一个名为 HDFS(Hadoop分布式文件系统)的分布式文件系统,专门存储超大数据文件,为整个Hadoop生态圈提供了基础的存储服务。
HDFS专为解决大数据存储问题而产生的,其具备了以下特点:
1) HDFS文件系统可存储超大文件
HDFS文件的大小可以大于网络中任意一个磁盘的容量,文件的所有块并不需要存储在一个磁盘上,因此可以利用集群上任意一个磁盘进行存储,由于具备这种分布式存储的逻辑,所以可以存储超大的文件,通常G、T、P级别。
2) 一次写入,多次读取
一个文件经过创建、写入和关闭之后就不需要改变,这个假设简化了数据一致性的问题,同时提高数据访问的吞吐量。
3) 运行在普通廉价的机器上
Hadoop的设计对硬件要求低,无需昂贵的高可用性机器上,因为在HDFS设计中充分考虑到了数据的可靠性、安全性和高可用性。
不适用于HDFS的场景:
1) 低延迟
HDFS不适用于实时查询这种对延迟要求高的场景,例如:股票实盘。往往应对低延迟数据访问场景需要通过数据库访问索引的方案来解决,Hadoop生态圈中的Hbase具有这种随机读、低延迟等特点。
2) 大量小文件
对于Hadoop系统,小文件通常定义为远小于HDFS的block size(默认64MB)的文件,由于每个文件都会产生各自的MetaData元数据,Hadoop通过Namenode来存储这些信息,若小文件过多,容易导致Namenode存储出现瓶颈。
3) 多用户更新
为了保证并发性,HDFS需要一次写入多次读取,目前不支持多用户写入,若要修改,也是通过追加的方式添加到文件的末尾处,出现太多文件需要更新的情况,Hadoop是不支持的。
针对有多人写入数据的场景,可以考虑采用Hbase的方案。
4) 结构化数据
HDFS适合存储半结构化和非结构化数据,若有严格的结构化数据存储场景,也可以考虑采用Hbase的方案。
5) 数据量并不大
通常Hadoop适用于TB、PB数据,若待处理的数据只有几十GB的话,不建议使用Hadoop,因为没有任何好处。
HDFS设计与架构
HDFS是一个主/从(Master/Slave)体系架构,由于分布式存储的性质,集群拥有两类节点NameNode和DataNode。
NameNode(名字节点):系统中通常只有一个,中心服务器的角色,管理存储和检索多个DataNode的实际数据所需的所有元数据。
DataNode(数据节点):系统中通常有多个,是文件系统中真正存储数据的地方,在NameNode统一调度下进行数据块的创建、删除和复制。
参考:(第3篇)HDFS是什么?HDFS适合做什么?我们应该怎样操作HDFS系统?-轻松学习hadoop-51CTO博客
HDFS 架构学习总结 | Matt's Blog
2.熟悉hdfs常用命令
命令基本格式:
hadoop fs -cmd < args >
1) 打印文件列表(ls)
# 列出hdfs文件系统根目录下的目录和文件 # 标准写法: hadoop fs -ls hdfs:/ #hdfs: 明确说明是HDFS系统路径 # 简写: hadoop fs -ls / #默认是HDFS系统下的根目录 # 打印指定子目录: hadoop fs -ls /package/test/ #HDFS系统下某个目录 # 列出hdfs文件系统所有的目录和文件 hadoop fs -ls -R /
2) 上传文件、目录(put、copyFromLocal)
put用法:
上传新文件:
hdfs fs -put file:/root/test.txt hdfs:/ #上传本地test.txt文件到HDFS根目录,HDFS根目录须无同名文件,否则“File exists” hdfs fs -put test.txt /test2.txt #上传并重命名文件。 hdfs fs -put test1.txt test2.txt hdfs:/ #一次上传多个文件到HDFS路径。
hdfs file的父目录一定要存在,否则命令不会执行
上传文件夹:
hdfs fs -put mypkg /newpkg #上传并重命名了文件夹。
上传目录
hdfs dir 一定要存在,否则命令不会执行
hadoop fs -put < local file or dir >...< hdfs dir >
覆盖上传:
hdfs fs -put -f /root/test.txt / #如果HDFS目录中有同名文件会被覆盖
从键盘读取输入到hdfs file中,按Ctrl+D结束输入,hdfs file不能存在,否则命令不会执行
hadoop fs -put - < hdsf file>
copyFromLocal用法:与put相类似,也可以从键盘读取输入到hdfs file中
上传文件并重命名:
hadoop fs -copyFromLocal file:/test.txt hdfs:/test2.txt
覆盖上传:
hadoop fs -copyFromLocal -f test.txt /test.txt
moveFromLocal:与put相类似,命令执行后源文件 local src 被删除,也可以从从键盘读取输入到hdfs file中
hadoop fs -moveFromLocal < local src > ... < hdfs dst >
3) 下载文件、目录(get、copyToLocal)
get用法:
拷贝文件到本地目录: hadoop fs -get hdfs:/test.txt file:/root/ 拷贝文件并重命名,可以简写: hadoop fs -get /test.txt /root/test.txt # local file不能和 hdfs file名字不能相同,否则会提示文件已存在,没有重名的文件会复制到本地 拷贝多个文件或目录到本地时,本地要为文件夹路径 hadoop fs -get < hdfs file or dir > ... < local dir > # 注意:如果用户不是root, local 路径要为用户文件夹下的路径,否则会出现权限问题,
copyToLocal用法:与get类似
拷贝文件到本地目录: hadoop fs -copyToLocal hdfs:/test.txt file:/root/ 拷贝文件并重命名,可以简写: hadoop fs -copyToLocal /test.txt /root/test.txt
4) 拷贝文件、目录(cp)
从本地到HDFS,同put,目标文件不能存在,否则命令不能执行
hadoop fs -cp file:/test.txt hdfs:/test2.txt
从HDFS到HDFS
hadoop fs -cp hdfs:/test.txt hdfs:/test2.txt hadoop fs -cp /test.txt /test2.txt 目标文件夹要存在,否则命令不能执行 hadoop fs -cp < hdfs file or dir >... < hdfs dir >
5) 移动文件(mv)
hadoop fs -mv hdfs:/test.txt hdfs:/dir/test.txt hadoop fs -mv /test.txt /dir/test.txt 源路径有多个时,目标路径必须为目录,且必须存在。 hadoop fs -mv < hdfs file or dir >... < hdfs dir > 注意:跨文件系统的移动(local到hdfs或者反过来)都是不允许的
6) 删除文件、目录(rm)
删除指定文件 hadoop fs -rm /a.txt 删除全部txt文件 hadoop fs -rm /*.txt 递归删除全部文件和目录 hadoop fs -rm -R /dir/ 每次可以删除多个文件或目录 hadoop fs -rm < hdfs file > ... hadoop fs -rm -r < hdfs dir>...
7) 读取文件(cat、tail)
hadoop fs -cat /test.txt #以字节码的形式读取 hadoop fs -tail /test.txt
8) 创建空文件(touchz)
hadoop fs - touchz /newfile.txt
9) 创建文件夹(mkdir)
hadoop fs -mkdir /newdir /newdir2 # 可以同时创建多个,只能一级一级的建目录,父目录不存在的话使用这个命令会报错 hadoop fs -mkdir -p /newpkg/newpkg2/newpkg3 # 同时创建父级目录,所创建的目录如果父目录不存在就创建该父目录
10) 获取逻辑空间文件、目录大小(du)
hadoop fs - du / #显示HDFS根目录中各文件和文件夹大小 hadoop fs -du -h / #以最大单位显示HDFS根目录中各文件和文件夹大小,文件的大小用方便阅读的形式表示,例如用64M代替67108864 hadoop fs -du -s / #仅显示HDFS根目录大小。即各文件和文件夹大小之和
11)合并文件(getmerge)
将hdfs指定目录下所有文件排序后合并到local指定的文件中,文件不存在时会自动创建,文件存在时会覆盖里面的内容
hadoop fs -getmerge < hdfs dir > < local file >
加上nl后,合并到local file中的hdfs文件之间会空出一行
hadoop fs -getmerge -nl < hdfs dir > < local file >
12)统计文件(count)
统计hdfs对应路径下的目录个数,文件个数,文件总计大小 显示为目录个数,文件个数,文件总计大小,输入路径 hadoop fs -count < hdfs path >
13)text
将文本文件或某些格式的非文本文件通过文本格式输出
hadoop fs -text < hdsf file>
14)setrep
改变一个文件在hdfs中的副本个数,上述命令中数字3为所设置的副本个数,-R选项可以对一个人目录下的所有目录+文件递归执行改变副本个数的操作
hadoop fs -setrep -R 3 < hdfs path >
13.stat
hadoop fs -stat [format] < hdfs path >
返回对应路径的状态信息
[format]可选参数有:%b(文件大小),%o(Block大小),%n(文件名),%r(副本个数),%y(最后一次修改日期和时间)
可以这样书写hadoop fs -stat %b%o%n < hdfs path >,不过不建议,这样每个字符输出的结果不是太容易分清楚14)tail
在标准输出中显示文件末尾的1KB数据
hadoop fs -tail < hdfs file >
15)archive
hadoop archive -archiveName name.har -p < hdfs parent dir > < src >* < hdfs dst >
命令中参数name:压缩文件名,自己任意取;< hdfs parent dir > :压缩文件所在的父目录;< src >:要压缩的文件名;< hdfs dst >:压缩文件存放路径*示例:hadoop archive -archiveName hadoop.har -p /user 1.txt 2.txt /des
示例中将hdfs中/user目录下的文件1.txt,2.txt压缩成一个名叫hadoop.har的文件存放在hdfs中/des目录下,如果1.txt,2.txt不写就是将/user目录下所有的目录和文件压缩成一个名叫hadoop.har的文件存放在hdfs中/des目录下
显示har的内容可以用如下命令:hadoop fs -ls /des/hadoop.jar
显示har压缩的是那些文件可以用如下命令
hadoop fs -ls -R har:///des/hadoop.har
注意:har文件不能进行二次压缩。如果想给.har加文件,只能找到原来的文件,重新创建一个。har文件中原来文件的数据并没有变化,har文件真正的作用是减少NameNode和DataNode过多的空间浪费。
16)balancer
hdfs balancer
如果管理员发现某些DataNode保存数据过多,某些DataNode保存数据相对较少,可以使用上述命令手动启动内部的均衡过程
17)dfsadmin
hdfs dfsadmin -help
管理员可以通过dfsadmin管理HDFS,用法可以通过上述命令查看
hdfs dfsadmin -report显示文件系统的基本数据
hdfs dfsadmin -safemode < enter | leave | get | wait >
enter:进入安全模式;leave:离开安全模式;get:获知是否开启安全模式;
wait:等待离开安全模式18)distcp
用来在两个HDFS之间拷贝数据
参考:
(第3篇)HDFS是什么?HDFS适合做什么?我们应该怎样操作HDFS系统?-轻松学习hadoop-51CTO博客
人类身份验证 - SegmentFault
3.Python操作HDFS的其他API
使用python操作hdfs本身并不难,只不过是把对应的shell 功能“翻译”成高级语言,网上大部分使用的是
pyhdfs:官方文档
hdfs:官方文档
选一种就可以。也可以两个都试一下。
hdfs可参考:https://blog.csdn.net/Gamer_gyt/article/details/52446757
pyhdfs可参考:https://blog.csdn.net/weixin_38070561/article/details/81289601
首先要安装pip:
yum install python-pip pip install --upgrade pip # 升级
然后安装pyhdfs/hdfs:
pip install pyhdfs/hdfs
以hdfs为例,尝试参考资料中的基本命令。
可参考:Python3调用Hadoop的API - Python开发之路 - 博客园
4.观察上传后的文件,上传大于128M的文件与小于128M的文件有何区别?
上述警告的解决方案:https://blog.csdn.net/mostermoonsky/article/details/95485931
到浏览器里看会发现:
两个文件的Block Size都是128M。无论多大的文件在HDFS中都是以Block为单位存储的。大于128MB会被分为两个block存储,小于128MB就是1个block存储。
我们在HDFS中存储数据是以块(block)的形式存放在DataNode中的,块(block)的大小可以通过设置dfs.blocksize来实现;
在Hadoop2.x的版本中,文件块的默认大小是128M,老版本中默认是64M;
寻址时间:HDFS中找到目标文件块(block)所需要的时间。
原理:
文件块越大,寻址时间越短,但磁盘传输时间越长;
文件块越小,寻址时间越长,但磁盘传输时间越短。
一、为什么HDFS中块(block)不能设置太大,也不能设置太小?
1. 如果块设置过大,
一方面,从磁盘传输数据的时间会明显大于寻址时间,导致程序在处理这块数据时,变得非常慢;
另一方面,mapreduce中的map任务通常一次只处理一个块中的数据,如果块过大运行速度也会很慢。
2. 如果块设置过小,
一方面存放大量小文件会占用NameNode中大量内存来存储元数据,而NameNode的内存是有限的,不可取;
另一方面文件块过小,寻址时间增大,导致程序一直在找block的开始位置。
因而,块适当设置大一些,减少寻址时间,那么传输一个由多个块组成的文件的时间主要取决于磁盘的传输速率。
二、 HDFS中块(block)的大小为什么设置为128M?
1. HDFS中平均寻址时间大概为10ms;
2. 经过前人的大量测试发现,寻址时间为传输时间的1%时,为最佳状态;
所以最佳传输时间为10ms/0.01=1000ms=1s
3. 目前磁盘的传输速率普遍为100MB/s;
计算出最佳block大小:100MB/s x 1s = 100MB
所以我们设定block大小为128MB。
ps:实际在工业生产中,磁盘传输速率为200MB/s时,一般设定block大小为256MB
磁盘传输速率为400MB/s时,一般设定block大小为512MB参考:https://blog.csdn.net/wx1528159409/article/details/84260023
https://blog.csdn.net/qq_35688140/article/details/86495857
5.启动HDFS后,会分别启动NameNode/DataNode/SecondaryNameNode,这些进程的的作用分别是什么?
NameNode主要是用来保存HDFS的元数据信息,比如命名空间信息,块信息等。当它运行的时候,这些信息是存在内存中的。但是这些信息也可以持久化到磁盘上。Namenode 管理着文件系统的Namespace。它维护着文件系统树(filesystem tree)以及文件树中所有的文件和文件夹的元数据(metadata)。
Datanode是文件系统的工作节点,他们根据客户端或者是namenode的调度存储和检索数据,并且定期向namenode发送他们所存储的块(block)的列表。
集群中的每个服务器都运行一个DataNode后台程序,这个后台程序负责把HDFS数据块读写到本地的文件系统。当需要通过客户端读/写某个 数据时,先由NameNode告诉客户端去哪个DataNode进行具体的读/写操作,然后,客户端直接与这个DataNode服务器上的后台程序进行通 信,并且对相关的数据块进行读/写操作。
Secondary NameNode是一个用来监控HDFS状态的辅助后台程序。就想NameNode一样,每个集群都有一个Secondary NameNode,并且部署在一个单独的服务器上。Secondary NameNode不同于NameNode,它不接受或者记录任何实时的数据变化,但是,它会与NameNode进行通信,以便定期地保存HDFS元数据的 快照。由于NameNode是单点的,通过Secondary NameNode的快照功能,可以将NameNode的宕机时间和数据损失降低到最小。同时,如果NameNode发生问题,Secondary NameNode可以及时地作为备用NameNode使用。
参考:https://blog.csdn.net/Gamer_gyt/article/details/51758881
https://blog.csdn.net/remote_roamer/article/details/50675059
6.NameNode是如何组织文件中的元信息的,edits log与fsImage的区别?使用hdfs oiv命令观察HDFS上的文件的metadata
1)NameNode是如何组织文件中的元信息的:
https://blog.csdn.net/workformywork/article/details/18371267
https://blog.csdn.net/u010846741/article/details/52369527
Hadoop 之 NameNode 元数据原理
2)fsimage - 它是在NameNode启动时对整个文件系统的快照
edit logs - 它是在NameNode启动后,对文件系统的改动序列
只有在NameNode重启时,edit logs才会合并到fsimage文件中,从而得到一个文件系统的最新快照。但是在产品集群中NameNode是很少重启的,这也意味着当NameNode运行了很长时间后,edit logs文件会变得很大。
参考:
查看HDFS的元数据文件fsimage和编辑日志edits(1) - lxw的大数据田地
3)命令hdfs oiv用于将fsimage,edits文件转换成其他格式的,如文本文件、XML文件。
该命令需要以下参数:
必须参数:
-i,–inputFile <arg> 输入FSImage文件.
-o,–outputFile <arg> 输出转换后的文件,如果存在,则会覆盖
可选参数:
-p,–processor <arg> 将FSImage文件转换成哪种格式: (Ls|XML|FileDistribution).默认为Ls.
-h,–help 显示帮助信息
例子1:
hdfs oiv -i /data1/hadoop/dfs/name/current/fsimage_0000000000019372521 -o /home/hadoop/fsimage.txt
执行后查看more /home/Hadoop/fsimage.txt
参考:查看HDFS的元数据文件fsimage和编辑日志edits(1) - lxw的大数据田地
7.HDFS文件上传下载过程,源码阅读与整理。
参考:
Hadoop之HDFS原理及文件上传下载源码分析(上)
Hadoop之HDFS原理及文件上传下载源码分析(下)
Hadoop学习之路(十)HDFS API的使用
- 认识HDFS
-
超级有影响力霸气的Java面试题大全文档
2012-07-18 09:47:048、运行时异常与一般异常有何异同? 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常... -
【Task 3】HDFS常用命令/API+上传下载过程
2019-08-01 11:01:50四、观察上传后的文件,上传大于128M的文件与小于128M的文件有何区别? 五、启动HDFS后,会分别启动NameNode/DataNode/SecondaryNameNode,这些进程的的作用分别是什么? 六、NameNode是如何组织文件中的...【Task 3】
一、认识HDFS
HDFS是用来解决什么问题的
HDFS设计与架构
二、熟悉hdfs常用命令
三、Python操作HDFS的其他API
四、观察上传后的文件,上传大于128M的文件与小于128M的文件有何区别?
五、启动HDFS后,会分别启动NameNode/DataNode/SecondaryNameNode,这些进程的的作用分别是什么?
六、NameNode是如何组织文件中的元信息的,edits log与fsImage的区别?使用hdfs oiv命令观察HDFS上的文件的metadata
七、HDFS文件上传下载过程,源码阅读与整理。
一、认识HDFS
HDFS是用来解决什么问题的
早期计算机中的文件是由单机的操作系统来进行管理的,单机中的文件管理存在以下不足:
①存储容量的限制。
②读写性能的限制。
③容灾能力不足。
当文件特别大的时候,上面三个问题凸显。
行业现状:
①数据格式多样化。各业务系统数据库中的结构化数据;日志文件等半结构化数据;视频、图片等非结构化数据。传统的数据库已经满足不了我们的存储需求。
②每天各种类型的数据以GB、TB的速度增长。单机的文件系统已管理不了如此大的数据量。
HDFS就是为了解决上面这些问题而生的:
①HDFS是一种允许文件通过网络在多台机器上分享的文件系统。
②HDFS将一个大文件分割成多个数据块,将这些数据块分散存储在多台机器上。
③虽然HDFS会将文件分割成多个数据块,但在程序和用户看来就跟操作本地磁盘中的文件一样。
④针对一个文件,可以并发读取它的数据块,增加了读取的性能。
⑤HDFS存储的容量具有巨大的扩展性。
⑥HDFS可以保证系统中的某些节点脱机时整个系统仍然能持续运行,并保证数据不丢失。HDFS设计与架构
浅谈HDFS架构
HDFS 是一个Hadoop分布式文件系统,具有高度容错,通常部署在廉价机器上。HDFS能提供高吞吐量的连续数据访问,适合超大数据集的应用。首先HDFS的设计之初就是针对超大文件的存储的,小文件不会提高访问和存储速度,反而会降低;其次它采用了最高效的访问模式,也就是经常所说的流式数据访问,特点就是一次写入多次读取;再有就是它运行在普通的硬件之上的,即使硬件故障,也就通过容错来保证数据的高可用。HDFS关键元素
Block:大文件的存储会被分割为多个block进行存储。默认为64MB,每一个blok会在多个datanode上存储多份副本,默认为3份。[这些设置都能够通过配置文件进行更改]
Namenode:主要负责存储一些metadata信息,主要包括文件目录、block和文件对应关系,以及block和datanote的对应关系
Datanode:负责存储数据,上面我们所说的高度的容错性大部分在datanode上实现的[还有一部分容错性是体现在namenode和secondname,还有jobtracker的容错等]。
二、熟悉hdfs常用命令
HDFS上的数据,分布在不同的地方,在Linux环境中,我们可以通过一些命令行进行 增加/查看/删除 等数据操作。#显示/下的所有文件夹信息 hadoop fs -ls / #递归显示所有文件夹和子文件(夹) hadoop fs -lsr #创建/user/hadoop目录 hadoop fs -mkdir /user/hadoop #把a.txt放到集群/user/hadoop/文件夹下 hadoop fs -put a.txt /user/hadoop/ #把集群上的/user/hadoop/a.txt拉到本地/目录下 hadoop fs -get /user/hadoop/a.txt / #集群上复制文件 hadoop fs -cp src dst #集群上移动文件 hadoop fs -mv src dst #查看集群上文件/user/hadoop/a.txt的内容 hadoop fs -cat /user/hadoop/a.txt #删除集群上/user/hadoop/a.txt文件 hadoop fs -rm /user/hadoop/a.txt #删除目录和目录下所有文件 hadoop fs -rmr /user/hadoop/a.txt #与hadoop fs -put功能类似 hadoop fs -copyFromLocal localsrc dst #将本地文件上传到hdfs,同时删除本地文件 hadoop fs -moveFromLocal localsrc dst
四、观察上传后的文件,上传大于128M的文件与小于128M的文件有何区别?
两个文件的Block Size都是128M。无论多大的文件在HDFS中都是以Block为单位存储的。大于128MB会被分为两个block存储,小于128MB就是1个block存储。
我们在HDFS中存储数据是以块(block)的形式存放在DataNode中的,块(block)的大小可以通过设置dfs.blocksize来实现;
在Hadoop2.x的版本中,文件块的默认大小是128M,老版本中默认是64M;
寻址时间:HDFS中找到目标文件块(block)所需要的时间。
(参考)
原理:
文件块越大,寻址时间越短,但磁盘传输时间越长;
文件块越小,寻址时间越长,但磁盘传输时间越短。五、启动HDFS后,会分别启动NameNode/DataNode/SecondaryNameNode,这些进程的的作用分别是什么?
HDFS,NameNode,DataNode,SecondaryNameNode的工作机制(这个写的很详细)
概述:
HDFS写数据流程:
六、NameNode是如何组织文件中的元信息的,edits log与fsImage的区别?使用hdfs oiv命令观察HDFS上的文件的metadata
NameNode中的Fsimage和Edits解析
查看HDFS的元数据文件fsimage和编辑日志edits(1)七、HDFS文件上传下载过程,源码阅读与整理。
hdfs文件上传及下载的流程
(还没看完~~~~~)
-
JAVA开发面试题&多线程篇&第二部分
2020-12-02 20:02:37JAVA开发面试题&多线程篇&...6同步和异步有何异同,在什么情况下分别使用它们?7Java线程中,sleep()和wait()区别8sleep()和yield()有什么区别?9请说出与线程同步相关的方法。10启动一个线程 -
最新Java面试宝典pdf版
2011-08-31 11:29:2241、运行时异常与一般异常有何异同? 27 42、error和exception有什么区别? 28 43、Java中的异常处理机制的简单原理和应用。 28 44、请写出你最常见到的5个runtime exception。 28 45、JAVA语言如何进行异常处理,... -
Java面试宝典2010版
2011-06-27 09:48:2741、运行时异常与一般异常有何异同? 42、error和exception有什么区别? 43、Java中的异常处理机制的简单原理和应用。 44、请写出你最常见到的5个runtime exception。 45、JAVA语言如何进行异常处理,关键字:... -
java面试宝典
2013-02-28 16:04:01public abstract boolean isStupidName(String name) {}}这有何错误? 18 79、public class Something { void doSomething () { private String s = ""; int l = s.length(); } }有错吗? 18 80、abstract class ... -
千方百计笔试题大全
2011-11-30 21:58:33public abstract boolean isStupidName(String name) {}}这有何错误? 18 79、public class Something { void doSomething () { private String s = ""; int l = s.length(); } }有错吗? 18 80、abstract class ... -
java面试题典 java 面试题 经典
2010-06-18 13:42:365. 运行时异常与一般异常有何异同? 8 6. 说出ArrayList,Vector, LinkedList的存储性能和特性。 8 7. Collection 和 Collections的区别。 8 8. &和&&的区别 8 9. HashMap和Hashtable的区别。 8 10. final, finally, ... -
Java面试宝典2020修订版V1.0.1.doc
2020-05-21 19:24:48它们之间有何本质区别? 84 41、什么是java反射机制? 84 42、hashmap的底层实现 85 43、什么是java内存泄漏,怎么预防? 85 七、框架部分 85 1、谈谈你对Struts2的理解。 85 2、谈谈你对Hibernate的理解。 86 3、你... -
java基础题 很全面
2009-05-09 09:24:245. 运行时异常与一般异常有何异同? 7 6. 说出ArrayList,Vector, LinkedList的存储性能和特性。 7 7. Collection 和 Collections的区别。 7 8. &和&&的区别。 8 9. HashMap和Hashtable的区别。 8 10. final, finally,... -
java面试题
2018-01-01 15:35:153. 运行时异常与一般异常有何异同? 8 4. 说出ArrayList,Vector,LinkedList的存储性能和特性 8 5. EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 9 6. ... -
达内总结的java最新笔试题core java,sql,web应有尽有
2012-05-15 19:13:275. 运行时异常与一般异常有何异同? 6. Hibernate中:不看数据库,不看XML文件,不看查询语句,怎么样能知道表结构? 7.目前几种主流数据库软件的应用特点、适用范围各是什么? 8.存储过程和函数的区别 9.试述数据库... -
java 面试题 总结
2009-09-16 08:45:345、运行时异常与一般异常有何异同? 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,... -
Activiti6.0教程例子下载
2017-11-08 14:36:55由于本人之前没有工作流及JBPM的相关基础,刚开始学习Activiti的时候可以说是无比痛苦的,根本不知道从何下手,这里也建议大家先进行工作流及BPMN2.0规范的学习,有了一定的基础后,再着手学习Activiti。 1.3.2. ... -
这么做有何优劣。 4.2.9 请结合OO设计理念,谈谈访问修饰符public、private、protected、default在应用设计中的作用。 4.3.0 深拷贝和浅拷贝区别。 4.3.1 数组和链表数据结构描述,各自的时间复杂度。 4.3.2 ...
-
net学习笔记及其他代码应用
2010-11-16 18:15:0914.CTS、CLS、CLR分别作何解释? 答:CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。 15.什么是装箱和拆箱? 答:从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。 16.什么是受... -
JAVA面试题最全集
2010-03-13 13:09:10使用StringBuffer类与String类进行字符串连接时有何区别? 57.调用Thread类的destroy()方法有什么后果? 58.多线程,用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用? 59.使用socket建立客户端... -
多媒体教室
2013-06-14 08:10:31检测周期可以指定学生机与教师机检测连接的最大时延,默认为 10 ,即在 10 秒内学生机与教师机未检测到有任何连接则认为该学生机断线。 3.3 电子举手 学生在听课过程中可以使用电子举手请求教师回应。 学生登录... -
《计算机操作系统》期末复习指导
2009-12-30 10:57:55主要有:响应比,并发性,信息的共享、保密与保护,可扩充性、可移植性、可读性、可“生成”性,安全可靠性,可测试性等。 第二章 用户与操作系统的接口 1、基本概念 作业(Job)是让计算机完成一件事或... -
程控交换实验、用户模块电路 主要完成BORSCHT七种功能,它由下列电路组成:
2008-12-24 18:17:593、先打开“交流开关”,指示发光二极管亮后,再分别按下直流输出开关J8,J9。此时实验箱上的五组电源已供电,各自发光二极管亮。 4、按 “复位”键进行一次上电复位,此时,CPU已对系统进行初始化处理,数码管循环... -
Oracle 9i & 10g编程艺术:深入数据库体系结构(09年度畅销榜TOP50)(08年度畅销榜TOP50)--详细书签版
2013-02-06 18:24:20CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Oracle 9i & 10g编程艺术:深入数据库体系结构(09年度畅销榜TOP50)(08年度畅销榜TOP50) 基本信息 原书名: ...
-
ARM9协处理器CP15及MCR和MRC指令
-
基于java的魂斗罗的设计
-
家-源码
-
Google_C++编码规范_中文版.pdf
-
beg-csharp-2008-dbs-master.zip
-
scala-continuations:Scala定界的continuation插件和库-源码
-
技术人员的赚钱之道-11:钱是什么?钱能生钱吗?
-
基于java的学生管理系统
-
Unity RUST 逆向安全开发
-
安卓快速开发框架!Jetpack-MVVM高频提问和解答,安卓系列学习进阶视频
-
在实际的使用中,应该如何合理配置核心线程数和队列长度呢?
-
零基础极简以太坊智能合约开发环境搭建并开发部署
-
LVS + Keepalived 实现 MySQL 负载均衡与高可用
-
【ceph】Messenger模块的基准测试工具ceph_perf_msgr_server/ceph_perf_msgr_client
-
Docker从入门到精通
-
MySQL 触发器
-
xampp-windows-x64-7.3.27-0-VC15-installer.exe
-
基于SSM框架的超市管理系统
-
【C++Primer读书笔记】2.1.2含有无符号类型表达式
-
研磨设计模式之桥接模式