Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建八(Hadoop客户端节点篇)

  • 九、hadoop集群客户端节点
  • 1.问题的提出
  • 2.如何配置集群和户端?
  • 3.具体实现



九、hadoop集群客户端节点

1.问题的提出

为什么要配置客户端连接集群?

1.这涉及两个操作HDFS集群的方式集群内操作和集群外操作
2.其中集群内操作就是在集群内某个节点上操作
3.集群外操作就是用集群之外的client与nameNode进行通信,完成操作

但是其群内操作会造成数据倾斜问题,严重时会导致节点的宕机。

  1. 集群内操作,选择一台DataNode节点作为操作的对象,每次上传文件的时候根据备份机制,上传的文件会本身会上传到自己上,备份到其他的节点。
  2. 久而久之,此节点的磁盘和网络IO负载超过其他的节点,导致它的性能远远低于其他的节点,此时会造成数据倾斜,严重点说,它的负载很大,也就容易宕机,此时集群内还要备份它原来存储的内容,这就造成额外的磁盘和网络IO
  3. 还有是因为计算时间的问题,当发生数据倾斜的时候,因为某节点存放的数据量很大,所有当分布计算任务时,数据量大的节点需要的计算时间就更多,当此节点计算完毕时,这个任务才会执行完毕,所有这样很占用时间。

2.如何配置集群和户端?

  1. 把高可用的完全分布式集群配置的hadoop包发送给自己新建的一个客户端虚拟机,必须保证客户机能与集群通信。
  2. 更改客户机的hosts文件,配置Hadoop环境变量,方便操作集群
  3. 在客户端正常操作HDFS集群就行了。

(侵删!以上部分来自:)

3.具体实现

  1. 准备一台虚拟机,独立作为客户端,要求:能与其他集群正常通信,有java环境,静态IP。此处为方便之后都将客户端称为client
  2. 将集群Hadoop的配置文件发送复制到client的相应位置,比如/usr/local/hadoop
  3. 配置Hadoop环境变量:vi /etc/profile,加入
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#Hadoop实际安装位置
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.4

使之生效source /etc/profile

  1. 验证hadoop -version
  2. 修改配置文件core-site.xml,修改 fs.default.name选项的值,使其指向集群master的地址
<!--指定namenode的地址-->
  	<property>
           	<name>fs.defaultFS</name>
           	<value>hdfs://192.168.88.129:9000</value>
  	</property>
  1. 修改hadoop-env的jdk路径,按实际client的java路径来
  2. 修改client主机名,此处改为client:
#修改主机名
hostnamectl set-hostname client
#验证
hostname
  1. 配置client的主机名映射vi /etc/hosts,加入集群所有的映射关系以及自身,最好也为集群所有节点添加下面client的映射关系,如:
192.168.88.129 node
192.168.88.130 node1
192.168.88.131 node2
192.168.88.132 cilent  #实际client的IP
  1. 之后即可正常使用Hadoop命令访问操作HDFS集群