Attention
1. 使用java操作hadoop、hive时,所需要的jar包尽量与hadoop、hive的版本一致,否则可能会出现一些莫名其妙的问题。
2.开启hiveserver2后台运行
hivemetastore:nohup hive --service metastore &
hvieserver2:nohup hive --service hiveserver2 &
3.配置hadoop的最小blocksize,必须是512字节的倍数。因为datanode进行写操作时,每512字节进行校验.
4.HDFS中的块(block)大小为什么为128M?
- 磁盘的平均寻址时间大概为10ms
- 经过测试,寻址时间为传输时间的1%时,为最佳状态
- 目前的磁盘传输速率普遍为100MB/s
- 计算最佳的block大小为 100MB * 1S = 100MB,所以设定block大小为128MB
5.查看hadoop镜像文件
- fsimage文件包含文件系统中的所有目录和文件inode的序列化信息
- 每个inode是一个文件或者目录的元数据的内部描述信息
- 对于文件来说,包含的信息有“副本级别”(replication level)、修改时间和访问时间、访问许可、、块大小、组成一个文件的块等
- 对于目录来说,包含的信息有修改时间、访问许可和配额元数据等信息
- 数据块存储在datanode中,但fsimage文件并不描述datanode,取而代之的是,namenode将这种块映射关系放在内存中。当datanode加入集群时。namenode向datanode索取块列表以建立块映射关系;namenode还将定期征询datanode以确保它拥有最新的块映射
hdfs oiv -i fsimage -o fsimage.xml -p XML
6.查看edits编辑日志
- edits记录对文件或目录的修改信息
hdfs oev -i edits -o edits.xml -p XML
7.HDFS的启动流程
- loading fsimage
- loading edits
- saving checkpoint
- safe mode
8.HDFS管理命令
hdfs dfsadmin
9.节点的服役与退役
添加新节点
1.在dfs.include文件中包含新节点名称,该文件在namenode的本地目录
[master:/hadoop/etc/dfs.include.txt] 文件不需要分发到节点
node1
node2
node3
node4 (新节点)
2.在hdfs-site.xml文件中添加属性
<property>
<name>dfs.hosts</name>
<value>/hadoop/etc/dfs.include.txt</value>
</property>
3.在namenode上刷新节点
hdfs dfsadmin -refreshNodes
4.在slaves文件中添加新节点ip
node1
node2
node3
node4 (新节点)
5.单独启动新的节点中的datanode
[node4]
hadoop-daemon.sh start datanode
节点退役
1.添加退役节点的ip到黑名单,不要更新白名单
[master:/hadoop/etc/dfs.hosts.exclude.txt]
node4 (退役节点)
2.配置hdfs-site.xml
<property>
<name>dfs.hosts.exclude</name>
<value>/hadoop/etc/dfs.hosts.exclude.txt</value>
</property>
3.刷新namenode节点
hdfs dfsadmin -refreshNodes
4.查看webui,节点状态在decommisstion in progress
5.当所有的要退役的节点都报告为Decommissioned,数据转移工作已经完成
6.从白名单删除节点,并刷新节点
[master:/hadoop/etc/dfs.include.txt]
node4删除
hdfs dfsadmin -refreshNodes
7.从slaves文件中删除退役节点
10.节点的服役与退役(yarn)
**添加新节点
1.在dfs.include文件中包含新节点名称,该文件在namenode的本地目录
[master:/hadoop/etc/dfs.include.txt]
node1
node2
node3
node4 (新节点)
2.在yarn-site.xml文件中添加属性
<property>
<name>yarn.resourcemanager.nodes.include-path</name>
<value>/hadoop/etc/dfs.include.txt</value>
</property>
3.在namenode上刷新节点
yarn rmadmin -refreshNodes
4.在slaves文件中添加新节点ip
node1
node2
node3
node4 (新节点)
5.单独启动新的节点中的datanode
[node4]
yarn-daemon.sh start nodemanager
节点退役
1.添加退役节点的ip到黑名单,不要更新白名单
[master:/hadoop/etc/dfs.hosts.exclude.txt]
node4 (退役节点)
2.配置yarn-site.xml
<property>
<name>yarn.resourcemanager.nodes.exclude-path</name>
<value>/hadoop/etc/dfs.hosts.exclude.txt</value>
</property>
3.刷新resourcManager节点
yarn rnadmin-refreshNodes
4.查看webui,节点状态在decommisstion in progress
5.当所有的要退役的节点都报告为Decommissioned,数据转移工作已经完成
6.从白名单删除节点,并刷新节点
[master:/hadoop/etc/dfs.include]
node4删除
yarn rmadmin -refreshNodes
7.从slaves文件中删除退役节点