Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建八(Hadoop客户端节点篇)
- 九、hadoop集群客户端节点
- 1.问题的提出
- 2.如何配置集群和户端?
- 3.具体实现
九、hadoop集群客户端节点
1.问题的提出
为什么要配置客户端连接集群?
1.这涉及两个操作HDFS集群的方式集群内操作和集群外操作
2.其中集群内操作就是在集群内某个节点上操作
3.集群外操作就是用集群之外的client与nameNode进行通信,完成操作
但是其群内操作会造成数据倾斜问题,严重时会导致节点的宕机。
- 集群内操作,选择一台DataNode节点作为操作的对象,每次上传文件的时候根据备份机制,上传的文件会本身会上传到自己上,备份到其他的节点。
- 久而久之,此节点的磁盘和网络IO负载超过其他的节点,导致它的性能远远低于其他的节点,此时会造成数据倾斜,严重点说,它的负载很大,也就容易宕机,此时集群内还要备份它原来存储的内容,这就造成额外的磁盘和网络IO
- 还有是因为计算时间的问题,当发生数据倾斜的时候,因为某节点存放的数据量很大,所有当分布计算任务时,数据量大的节点需要的计算时间就更多,当此节点计算完毕时,这个任务才会执行完毕,所有这样很占用时间。
2.如何配置集群和户端?
- 把高可用的完全分布式集群配置的hadoop包发送给自己新建的一个客户端虚拟机,必须保证客户机能与集群通信。
- 更改客户机的hosts文件,配置Hadoop环境变量,方便操作集群
- 在客户端正常操作HDFS集群就行了。
(侵删!以上部分来自:)
3.具体实现
- 准备一台虚拟机,独立作为客户端,要求:能与其他集群正常通信,有java环境,静态IP。此处为方便之后都将客户端称为client
- 将集群Hadoop的配置文件发送复制到client的相应位置,比如/usr/local/hadoop
- 配置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
- 验证
hadoop -version
- 修改配置文件core-site.xml,修改 fs.default.name选项的值,使其指向集群master的地址
<!--指定namenode的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.88.129:9000</value>
</property>
- 修改hadoop-env的jdk路径,按实际client的java路径来
- 修改client主机名,此处改为client:
#修改主机名
hostnamectl set-hostname client
#验证
hostname
- 配置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
- 之后即可正常使用Hadoop命令访问操作HDFS集群