hadoop多节点配置,压缩,序列化,快照,回收站

节点的多目录配置:
--------------------------------------
  namenode:配置两个文件夹为工作目录(容错) //两文件夹数据相同
  datanode:配置两个文件夹为工作目录(扩容) //两文件夹数据不同

namenode配置:hdfs-site.xml
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name,file://${hadoop.tmp.dir}/dfs/name2</value>
<description>以逗号分隔的路径列表,用于冗余(提供备份) </description>
</property>

datanode配置:hdfs-site.xml
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data,file://${hadoop.tmp.dir}/dfs/data2</value>
</property>

之后将/soft/hadoop/etc文件夹进行分发

格式化文件系统:
  1、停止所有进程:stop-all.sh
  2、删除/soft/hadoop/logs
  3、删除~/hadoop
  4、hdfs namenode -format

启动:start-dfs.sh

容错和容灾:
------------------------------------
容错:能够容忍故障的发生,正常对外提供服务
容灾:对火灾、断电等一切不可抗因素有恢复能力

配额:
-------------------------------------
目录配额:限定目录能存放的文件个数(限于整个目录树,包括当前目录)
hdfs dfsadmin -setQuota 3 data
hdfs dfsadmin -clrQuota data

空间配额:限定目录能够存放的文件总大小(计算块大小x副本数)
hdfs dfsadmin -setSpaceQuota <quota> <dirname>...<dirname>
hdfs dfsadmin -clrSpaceQuota <dirname>...<dirname>


查看hadoop命令帮助
hdfs dfs -help mkdir
hdfs dfsadmin -help setQuota

hdfs默认最小块大小是1m
配置文件:dfs.namenode.fs-limits.min-block-size

手动设置hdfs文件的块大小,副本数
FSDataOutputStream fos = fs.create(p,true,1024,(short)2,1048576);


快照:
对当前资源的一个快速备份(投影),快照不会发生改变
hdfs dfs -createSnapshot <snapshotDir> [<snapshotName>]
hdfs dfs -deleteSnapshot <snapshotDir> <snapshotName>
hdfs dfs -renameSnapshot <snapshotDir> <oldName> <newName>

hdfs dfsadmin -allowSnapshot <snapshotDir>
hdfs dfsadmin -disallowSnapshot <snapshotDir>

hdfs dfs -appendToFile 1.sh data/1.txt //将指定文件追加到hdfs文件末尾

1、快照会将当前状态的文件进行快速备份,元数据指向源文件

2、和Linux的硬链接类似,但是快照不会进行改变

3、快照存放的路径在被快照的文件夹路径下的.snapshot文件夹

4、不同文件夹创建的快照可以重名

5、无法删除快照或删除源文件夹

回收站:如果怕删除文件,需要启动回收站机制(core-site.xml)
<property>
<name>fs.trash.interval</name>
<value>1</value>
<description>
默认为0,即禁用回收站;配置文件说明垃圾回收的分钟数;
如果服务端禁用,则需要检查客户端是否启用回收站。
如果服务端启动,则客户端配置就可以忽略
</description>
</property>

<property>
<name>fs.trash.checkpoint.interval</name>
<value>0</value>
<description>
创建检查点间隔,需要小于等于fs.trash.interval
</description>
</property>

hdfs dfs -expunge //清空回收站过期文件


序列化:
将结构化的对象转化为字节流,以便在网络上进行传输或者进行永久存储的过程

序列化经常在两个领域出现:进程间通信,永久存储

hadoop中节点的进程间通信是通过RPC实现

RPC是一种协议,使用的是序列化技术

序列化技术特点:
紧凑:体积小,节省带宽
快速:序列化过程快速
可扩展:新的api完整兼容旧数据格式
支持互操作:跨语言

hadoop的序列化:writable

java writable
----------------------------------------
byte ByteWritable
short ShortWritable
int
long
float
double
char
boolean
String Text

IntWritable
Text

归档:启动yarn

archive
har文件 //hadoop归档文件

创建har文件:
  hadoop archive -archiveName my.har -p /user/data data1 data2 /

查看归档文件:
  hdfs dfs -lsr har:///my.har

hdfs性能:
不适合存储海量小文件:
    namenode:在启动的时候将fsimage中的文件索引加载到内存。

    平均一个文件,占用namenode内存150字节。

如果存储海量小文件,namenode内存占用量会特别大

小文件处理:
  1、归档 //har
  2、压缩 //
  3、创建序列文件 //sequenceFile

hadoop的压缩:
压缩格式           压缩工具   算法    文件扩展名   是否可切割
DEFLATE     N/A   DEFLATE   .deflate     No 
gzip        gzip    DEFLATE   .gz       No 
bzip2       bzip2   bzip2     .bz2       Yes 
LZO       lzop     LZO     .lzo       No
LZ4       N/A     LZ4     .lz4       No 
Snappy      N/A      Snappy   .snappy     No

压缩格式           压缩编解码器
DEFLATE            org.apache.hadoop.io.compress.DefaultCodec √
gzip                org.apache.hadoop.io.compress.GzipCodec √
bzip2             org.apache.hadoop.io.compress.BZip2Codec √
LZO               com.hadoop.compression.lzo.LzopCodec
LZ4                org.apache.hadoop.io.compress.Lz4Codec √
Snappy              org.apache.hadoop.io.compress.SnappyCodec √





原文地址:https://www.cnblogs.com/zyde/p/8899774.html