搭建HDFS集群的客户端并利用eclipse控制HDFS

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共享

猜你喜欢

转载自blog.csdn.net/Andrea_null/article/details/83032732
今日推荐