專用網路(Virtual Private Cloud,VPC)為使用者建立一個隔離的網路環境,使用者可以選擇自有的 IP 位址範圍、劃分網路、配置路由表、網關等。

詳見專用網路產品簡介。另外通過Express Connect 可以實現跨地區或跨使用者的 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)
  1. 建立叢集。

    在 E-MapReduce 上面建立兩個叢集,Hive 叢集 C1 處於 VPC1 中,HBase 叢集 C2 處於 VPC2 中,兩個叢集都在杭州地區。

  2. 配置Express Connect。

    配置詳見同地區下的 VPC 私網互連。

  3. ssh 登入 HBase 叢集,通過 HBase Shell 建立表。
    hbase(main):001:0> create 'testfromHbase','cf'
  4. ssh 登入 Hive。
    1. 修改 hosts,增加如下一行:
      $zk_ip emr-cluster //$zk_ip為Hbase叢集的zk節點IP
    2. 通過 Hive Shell 訪問 HBase。
      hive> set hbase.zookeeper.quorum=172.16.126.111,172.16.126.112,172.16.126.113;
      hive> CREATE EXTERNAL TABLE IF NOT EXISTS testfromHive (rowkey STRING, pageviews Int, bytes STRING) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ('hbase.columns.mapping' = ':key,cf:c1,cf:c2') TBLPROPERTIES ('hbase.table.name' = 'testfromHbase');
      此時命令會卡住,然後會報 java.net.SocketTimeoutException 的異常,原因是 HBase 叢集的 ECS 所在的安全性群組限制了相關連接埠的訪問(E-MapReduce 建立的安全性群組預設只開放 22 連接埠)E-MapReduce,所以需要給 HBase 叢集的安全性群組增加安全性群組規則開放連接埠給 Hive 叢集,如下圖所示: