NN DN设置内存
//Hadoop2.X:hadoop-env.sh里设置成3G。默认2000MHADOOP_NAMENODE_OPTS=-Xmx3072mHADOOP_DATANODE_OPTS=-Xmx3072m//Hadoop3.X:hadoop-env.sh里设置成3G 。默认自动分配NN DN内存,但是非常不合理// NN每增加100万个块 增加1G内存,// DN单机上块低于400万为4G,每增加100万个块 增加1G内存.export HDFS_NAMENODE_OPTS="-Dhadoop.security.logger=INFO,RFAS -Xmx3072m"export HDFS_DATANODE_OPTS="-Dhadoop.security.logger=ERROR,RFAS -Xmx3072m"
namenode心跳并发数
hdfs-site.xml 默认是10。修改为:print int(20*math.log(datanode台数))
<property>
<name>dfs.namenode.handler.count</name>
<value>21</value>
</property>
开启回收站
core-site.xml
<property>
<name>fs.trash.interval</name>
<value>1</value> 垃圾文件保留时间为一分钟
</property>
<property>
<name>fs.trash.checkpoint.interval</name>
<value>1440</value>检查回收站的间隔时间
</property>
namenode多目录
hdfs-site.xml 每个目录存放内容相同!!!增加可靠性
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name1,file://${hadoop.tmp. dir}/dfs/name2</value>
</property>
datanode多目录
hdfs-site.xml 每个目录存储的数据不一样!!!
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data1,file://${hadoop.tmp. dir}/dfs/data2</value>
</property>
hadoop3.X纠删码
RS-3-2-1024k:每个单元大小1024k,使用RS编码,每3个数据单元 生成2个校验单元 共5个单元,只要这5个单元中有任意3个单元存在(数据、校验均可),就可以得到原始数据。 300M的数据 原来需要存储900M,现在需要存储500M。
- 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策
- 默认只开启对 RS-6-3-1024k 策略的支持 ```bash hdfs ec # 查看纠删码相关命令
需求:将/input 目录设置为 RS-3-2-1024k 策略
hdfs ec -enablePolicy -policy RS-3-2-1024k # 开启策略 hdfs dfs -mkdir /input # 创建目录 hdfs ec -setPolicy -path /input -policy RS-3-2-1024k # 对目录设置策略
<a name="rG4vj"></a>
### hadoop3.X 冷热数据分离
将不同的数据存储在不同类型的硬盘中<br />还需要修改hdfs.site.xml 标识路径为SSD或DISK
```bash
hdfs storagepolicies -listPolicies # 查看当前有哪些存储策略可用
hdfs storagepolicies -setStoragePolicy -path xxx -policy xxx # 指定路径存储策略
hdfs storagepolicies -getStoragePolicy -path xxx # 获取路径的存储策略
hdfs storagepolicies -unsetStoragePolicy -path xxx # 取消本路径策略
小文件归档
把/input目录里的所有文件归档为 input.har 放到/output
hadoop archive -archiveName input.har -p /input /output
查看有哪些小文件
hadoop fs -ls har:///output/input.har
把里面的一个小文件复制到别处 才能使用
hadoop fs -cp har:///output/input.har/word.txt /other
集群数据迁移
两个namenode地址
bin/hadoop distcp hdfs://hadoop102:8020/user/atguigu/hello.txt hdfs://hadoop105:8020/user/atguigu/hello.txt
