专有网络(Virtual Private Cloud,VPC)为用户创建一个隔离的网络环境,用户可以选择自有的 IP 地址范围、划分网络、配置路由表、网关等,详见
专有网络产品简介;另外通过
高速通道 可以实现跨地域或跨用户的 VPC 内网互通、VPC 与物理 IDC 机房互通。
创建专有网络集群
E-MapReduce 在创建集群的时候可以选择网络类型,即经典网络/专有网络,若选择专有网络,需要如下额外操作:
所属 VPC:选择将当前创建的 E-MapReduce 集群放在哪个 VPC 中,如果还没创建可以进入VPC 控制台进行创建,一般一个账号最多创建 2 个 VPC 网络,超过 2 个需要提工单。
子网(交换机):E-MapReduce 集群内的 ECS 实例通过交换机进行通信,如果还没创建可以进入VPC 控制台进行创建,因为交换机有可用区的属性,所以在 E-MapReduce 创建集群时选定了可用区后,创建的交换机也必须属于该可用区。
新建安全组:如果打开,那么就需要输入新建的安全组的名字。
所属安全组:集群所属的安全组,经典网络的安全组不能在 VPC 中使用,VPC 的安全组只能在当前 VPC 中使用。这里只展示用户在 E-MapReduce 产品中创建的安全组。因为一些安全的原因目前尚不支持选择在 E-MapReduce 外创建的安全组。如果需要新建安全组,可以选择“新建安全组”选项,同时输入安全组的名字完成新建。
示例
不同 VPC 中的 EMR 集群通信(Hive 访问 HBase)
创建集群:
在 E-MapReduce 上面创建两个集群,Hive 集群 C1 处于 VPC1 中,HBase 集群 C2 处于 VPC2 中,两个集群都在杭州区域。
配置高速通道:
配置详见同地域下的 VPC 私网互通。
ssh 登录 HBase 集群,通过 HBase Shell 创建表。
- [backcolor=transparent]hbase[backcolor=transparent]([backcolor=transparent]main[backcolor=transparent]):[backcolor=transparent]001[backcolor=transparent]:[backcolor=transparent]0[backcolor=transparent]>[backcolor=transparent] create [backcolor=transparent]'testfromHbase'[backcolor=transparent],[backcolor=transparent]'cf'
ssh 登录 Hive
修改 hosts,增加如下一行:[backcolor=transparent]$zk_ip emr[backcolor=transparent]-[backcolor=transparent]cluster [backcolor=transparent]//$zk_ip为Hbase集群的zk节点IP
通过 Hive Shell 访问 HBase。
- [backcolor=transparent]hive[backcolor=transparent]>[backcolor=transparent] [backcolor=transparent]set[backcolor=transparent] hbase[backcolor=transparent].[backcolor=transparent]zookeeper[backcolor=transparent].[backcolor=transparent]quorum[backcolor=transparent]=[backcolor=transparent]172.16[backcolor=transparent].[backcolor=transparent]126.111[backcolor=transparent],[backcolor=transparent]172.16[backcolor=transparent].[backcolor=transparent]126.112[backcolor=transparent],[backcolor=transparent]172.16[backcolor=transparent].[backcolor=transparent]126.113[backcolor=transparent];
- [backcolor=transparent]hive[backcolor=transparent]>[backcolor=transparent] CREATE EXTERNAL TABLE IF NOT EXISTS testfromHive [backcolor=transparent]([backcolor=transparent]rowkey STRING[backcolor=transparent],[backcolor=transparent] pageviews [backcolor=transparent]Int[backcolor=transparent],[backcolor=transparent] bytes STRING[backcolor=transparent])[backcolor=transparent] STORED BY [backcolor=transparent]'org.apache.hadoop.hive.hbase.HBaseStorageHandler'[backcolor=transparent] WITH SERDEPROPERTIES [backcolor=transparent]([backcolor=transparent]'hbase.columns.mapping'[backcolor=transparent] [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]':key,cf:c1,cf:c2'[backcolor=transparent])[backcolor=transparent] TBLPROPERTIES [backcolor=transparent]([backcolor=transparent]'hbase.table.name'[backcolor=transparent] [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]'testfromHbase'[backcolor=transparent]);
此时命令会卡住,然后会报 java.net.SocketTimeoutException 的异常,原因是 HBase 集群的 ECS 所在的安全组限制了相关端口的访问(E-MapReduce 创建的安全组默认只开放 22 端口)E-MapReduce,所以需要给 HBase 集群的安全组增加安全组规则开放端口给 Hive 集群,如下图所示:
自有 IDC 专线接入(访问 VPC 中 EMR 集群)
详见
自行专线接入访问 VPC。