精华内容
下载资源
问答
  • 在系统的这颗树中,树根叫做/,也就是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 ##类似根目录的目录,但下属文件多是用户级的,一般与具体系统无瓜。(对应的/ 下多是系统级别。)

    1. 虚拟文件系统 /proc
      该目录挂载了一个虚拟文件系统,以虚拟文件的形式映射系统与进程在内存中的运行时信息。
      发现mac系统里是不存在这个目录的。
    2. /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 常用的目录操作指令
    3. 路径
      绝对路径:路径写法有根目录写起"/" 。
      /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

    展开全文
  • 1、先将PLC程序传入程序控制器中,只连接启动与停止开关,先不与变频器相连接,以免输出电压不正确导致变频器出错。 2、按下启动按钮,看是否按照规定曲线运行,如果运行正确则证明PLC部分调试成功。 3、连接PLC的...
  •  第6章 有始有终——数据库的启动与关闭  6.1 数据库启动  6.1.1 数据库启动原理  6.1.2 数据库启动  6.1.3 数据库启动疑难解析  6.2 数据库关闭  6.2.1 数据库关闭原理  6.2.2 数据库的关闭...
  •  第6章 有始有终——数据库的启动与关闭  6.1 数据库启动  6.1.1 数据库启动原理  6.1.2 数据库启动  6.1.3 数据库启动疑难解析  6.2 数据库关闭  6.2.1 数据库关闭原理  6.2.2 数据库的关闭...
  • 26.模拟中偺接口模拟用户接口什么区别?完成哪些功能? 答:应用范围不一样: 模拟用户接口是社控交挟设备连接模拟话杌的接口电路,实际上是樸拟电和数宁电路 间的接口ε而模拟中繼口是用于连接模拟中緒线的接口,常...
  • 41、运行时异常一般异常有何异同? 27 42、error和exception有什么区别? 28 43、Java中的异常处理机制的简单原理和应用。 28 44、请写出你最常见到的5个runtime exception。 28 45、JAVA语言如何进行异常处理,...
  • 认识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文件上传下载过程,源码阅读与整理。

    参考:

    展开全文
  • 认识HDFSHDFS是用来解决什么问题的HDFS设计架构熟悉hdfs常用命令Python操作HDFS的其他API观察上传后的文件,上传大于128M的文件小于128M的文件有何区别?启动HDFS后,会分别启动NameNode/DataNode/...
    1. 认识HDFS
      1. HDFS是用来解决什么问题的
      2. HDFS设计与架构
    2. 熟悉hdfs常用命令
    3. Python操作HDFS的其他API
    4. 观察上传后的文件,上传大于128M的文件与小于128M的文件有何区别?
    5. 启动HDFS后,会分别启动NameNode/DataNode/SecondaryNameNode,这些进程的的作用分别是什么?
    6. NameNode是如何组织文件中的元信息的,edits log与fsImage的区别?使用hdfs oiv命令观察HDFS上的文件的metadata
    7. 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为例,尝试参考资料中的基本命令。

    a054fd0d40a9eb292f91761ed79c3425.png

    可参考:Python3调用Hadoop的API - Python开发之路 - 博客园

    4.观察上传后的文件,上传大于128M的文件与小于128M的文件有何区别?

    075896b82c8571674eac80876d047578.png

    b558f94a3f2afd6974a82874e46be4b1.png

    上述警告的解决方案:https://blog.csdn.net/mostermoonsky/article/details/95485931

    到浏览器里看会发现:

    2c280ebd4c6ceb23d081f0d15b2d05ea.png

    两个文件的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的使用

    展开全文
  • 8、运行时异常一般异常有何异同?  异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常...
  • 四、观察上传后的文件,上传大于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
    

    三、Python操作HDFS的其他API

    pyhdfs
    hdfs

    四、观察上传后的文件,上传大于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开发面试题&多线程篇&...6同步和异步有何异同,在什么情况下分别使用它们?7Java线程中,sleep()和wait()区别8sleep()和yield()有什么区别?9请说出线程同步相关的方法。10启动一个线程
  • 最新Java面试宝典pdf版

    热门讨论 2011-08-31 11:29:22
    41、运行时异常一般异常有何异同? 27 42、error和exception有什么区别? 28 43、Java中的异常处理机制的简单原理和应用。 28 44、请写出你最常见到的5个runtime exception。 28 45、JAVA语言如何进行异常处理,...
  • Java面试宝典2010版

    2011-06-27 09:48:27
    41、运行时异常一般异常有何异同? 42、error和exception有什么区别? 43、Java中的异常处理机制的简单原理和应用。 44、请写出你最常见到的5个runtime exception。 45、JAVA语言如何进行异常处理,关键字:...
  • java面试宝典

    2013-02-28 16:04:01
    public 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:33
    public 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:36
    5. 运行时异常一般异常有何异同? 8 6. 说出ArrayList,Vector, LinkedList的存储性能和特性。 8 7. Collection 和 Collections的区别。 8 8. &和&&的区别 8 9. HashMap和Hashtable的区别。 8 10. final, finally, ...
  • 它们之间有何本质区别? 84 41、什么是java反射机制? 84 42、hashmap的底层实现 85 43、什么是java内存泄漏,怎么预防? 85 七、框架部分 85 1、谈谈你对Struts2的理解。 85 2、谈谈你对Hibernate的理解。 86 3、你...
  • java基础题 很全面

    2009-05-09 09:24:24
    5. 运行时异常一般异常有何异同? 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:15
    3. 运行时异常一般异常有何异同? 8 4. 说出ArrayList,Vector,LinkedList的存储性能和特性 8 5. EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 9 6. ...
  • 5. 运行时异常一般异常有何异同? 6. Hibernate中:不看数据库,不看XML文件,不看查询语句,怎么样能知道表结构? 7.目前几种主流数据库软件的应用特点、适用范围各是什么? 8.存储过程和函数的区别 9.试述数据库...
  • java 面试题 总结

    2009-09-16 08:45:34
    5、运行时异常一般异常有何异同? 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,...
  • 由于本人之前没有工作流及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 ...
  • 14.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 电子举手 学生在听课过程中可以使用电子举手请求教师回应。 学生登录...
  • 主要:响应比,并发性,信息的共享、保密保护,可扩充性、可移植性、可读性、可“生成”性,安全可靠性,可测试性等。 第二章 用户操作系统的接口 1、基本概念 作业(Job)是让计算机完成一件事或...
  • 3、先打开“交流开关”,指示发光二极管亮后,再分别按下直流输出开关J8,J9。此时实验箱上的五组电源已供电,各自发光二极管亮。 4、按 “复位”键进行一次上电复位,此时,CPU已对系统进行初始化处理,数码管循环...
  • CruiseYoung提供的带详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Oracle 9i & 10g编程艺术:深入数据库体系结构(09年度畅销榜TOP50)(08年度畅销榜TOP50) 基本信息 原书名: ...

空空如也

空空如也

1 2 3
收藏数 58
精华内容 23
关键字:

启动与启动有何分别