文章目录
HDFS集群为什么要搭建客户端?
- 因为我们不建议将某个DataNode作为客户端对数据进行操作。这种操作叫做集群内操作。集群内操作的缺点是,第一份数据总会存储在当前节点上,这样当前节点会存的数据多,出现数据倾斜问题。对于存储框架来说,有的节点存的多,有的节点存的少。第一个磁盘IO会高,久而久之导致第一台磁盘性能与其他有差异。
- 如果每一次上传文件都是选择某一台datanode作为客户端,就会导致节点上的磁盘以及网络IO负载超过其他节点,久而久之节点的磁盘及网卡性能远远低于其他节点,从而导致数据倾斜问题,有可能有数据丢失问题,导致集群其他额外的磁盘IO和网络IO。
- 数据倾斜也可能导致计算倾斜,出现计算时间长,效率低的问题,出现木桶效应。所以我们一般选择集群外操作,也就是配置集群的客户端。
如何配置集群客户端?
1、找一台新的虚拟机、服务器,这台服务器必须能与集群通信,必须配置成功Java JDK
ping node1
ping node2
ping node3
ping node4
2、将配置好的安装包原封不动的拷贝到新的服务器上
3、配置环境变量方便操作HDFS
4、在客户端正常操作HDFS集群就可以了
使用eclipse控制HDFS填坑
在本机下配置HADOOP_HOME
1.下载winutils的windows版本
GitHub上,有人提供了winutils的windows的版本,项目地址是:https://github.com/srccodes/hadoop-common-2.2.0-bin
直接下载此项目的zip包,下载后是文件名是hadoop-common-2.2.0-bin-master.zip,随便解压到一个目录
2.配置环境变量
增加用户变量HADOOP_HOME,值是下载的zip包解压的目录,然后在系统变量path里增加$HADOOP_HOME\bin 即可。
操作权限问题
可以读,不可以删除修改
在系统环境变量加上环境变量HADOOP_USER_NAME值为虚拟机的用户名
hdfs依赖的jar包导入到工程中,tomcat启动不起来了
原因:jar包冲突
解决方法:整理精简jar包
Permission denied错误
报错如下
出现此错误是权限问题。需要修改虚拟机每个节点里的hdfs-site.xml配置文件。加入如下配置:
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
成功解决此问题。
HDFS的联邦机制
高可用的集群:解决NN单点故障问题
如果经常存小文件:内存占用量过大
可以使用联邦机制来解决
两个NN元数据相互隔离但是DN共享