需求
在企业级hadoop集群使用过程中有时需要外部网络来访问hadoop内部网络,比如外部网络访问hdfs中文件,但是根据hdfs文件访问流程知道客户端并不直接从namenode获取数据,而是通过namenode查询到数据位置后,返回给客户端一个datanode地址供客户端与datanode建立通信,这时问题就来了,namenode返回的地址为hadoop内部地址,外部网络无法访问,此时客户端怎么获取到数据呢?
因此我们在hadoop集群内部构建一台接口机,使其能被外部网络和内部网络访问,在此接口上部署httpfs服务(部署方式这里略去),用haproxy代理httpfs服务地址,这样就能使外部网络访问hdfs,同样的道理我们可以代理hiveserver,hbase rest api,以及impala服务等等,haproxy作为了连通内部与外部网络的桥梁.不光如此,在企业级集群中hiveserver可能几十上百个,Impala Daemon也可能几十上百个甚至更多,为了保证每个机子能够均匀的处理业务,我们需要对他们做负载均衡,而这些HAProxy也能做到.
HAProxy安装
源码编译安装
安装GCC组件
sudo yum -y install gcc*
安装ssl
sudo yum -y install openssl-devel pcre-devel
解压到指定目录
|
|
编译HAProxy
|
|
./haproxy -vv 查看是否安装成功
rpm包安装
haproxy rpm资源地址:http://www.rpmfind.net/linux/rpm2html/search.php?query=haproxy
下载后按照rpm方式安装
配置文件会默认安装在/etc/haproxy/haproxy.cfg,按照下面的流程修改配置文件(这种方式不需要在haproxy主目录下新建配置文件)
查看是否安装成功:haproxy -vv
启动方式:service haproxy start
配置HAProxy
配置参数说明
配置样例
在HAProxy主目录下新建一个config.cfg文件 配置以下:
从上面可以得出:
web管理页面地址:192.168.1.200:10900/hivestate,用户名:admin,密码:123456
对外统一hiveserver2接口:192.168.1.200:10001
对外统一httpfs接口:192.168.1.200:14001
上面配置了hiveserver和httpfs的代理,其余服务与这个类似
启动HAProxy
在HAProxy主目录下:
./haproxy -f config.cfg #config.cfg即是刚刚新建的HAProxy配置文件
访问web页面查看监控信息:
如果能正确显示信息则配置正确
监测页面参数项说明
|
|