

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Konfigurasikan HBase
<a name="emr-hbase-configure"></a>

Meskipun pengaturan HBase default harus bekerja untuk sebagian besar aplikasi, Anda dapat memodifikasi pengaturan konfigurasi HBase Anda. Untuk melakukannya, gunakan properti dari klasifikasi konfigurasi HBase. Untuk informasi selengkapnya, lihat [Konfigurasikan aplikasi](emr-configure-apps.md).

Contoh berikut membuat cluster dengan direktori akar HBase alternatif berdasarkan file konfigurasi, `myConfig.json`, disimpan di Amazon S3.

**catatan**  
Karakter lanjutan baris Linux (\\) disertakan agar mudah dibaca Karakter ini bisa dihapus atau digunakan dalam perintah Linux. Untuk Windows, hapus atau ganti dengan tanda sisipan (^).

```
aws emr create-cluster --release-label {{emr-7.14.0}} --applications Name=HBase \
--instance-type m5.xlarge --instance-count 3 --configurations https://s3.amazonaws.com/amzn-s3-demo-bucket/myfolder/myConfig.json
```

File `myConfig.json` menentukan `hbase.rootdir` properti untuk properti `hbase-site` klasifikasi konfigurasi seperti yang ditunjukkan dalam contoh berikut. Ganti {{ip-XXX-XX-XX-XXX.ec2.internal}} dengan nama host DNS internal dari node utama cluster.

```
[
  {
    "Classification":"hbase-site",
    "Properties": {
       "hbase.rootdir": "hdfs://{{ip-XXX-XX-XX-XXX.ec2.internal}}:8020/user/myCustomHBaseDir"
    }
  }
]
```

**catatan**  
Dengan Amazon EMR versi 5.21.0 dan yang lebih baru, Anda dapat mengganti konfigurasi klaster dan menentukan klasifikasi konfigurasi tambahan untuk setiap grup instans dalam klaster berjalan. Anda melakukan ini dengan menggunakan konsol Amazon EMR, AWS Command Line Interface (AWS CLI), atau AWS SDK. Untuk informasi selengkapnya, lihat [Menyediakan Konfigurasi untuk Grup Instans dalam Klaster Berjalan](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps-running-cluster.html).

## Perubahan alokasi memori di YARN
<a name="emr-hbase-configure-yarn"></a>

HBase tidak berjalan sebagai aplikasi YARN, sehingga perlu menghitung ulang memori yang dialokasikan untuk YARN dan aplikasinya, yang menghasilkan pengurangan memori keseluruhan yang tersedia untuk YARN jika HBase diinstal. Anda harus mempertimbangkan hal ini ketika merencanakan untuk melakukan kolokasi aplikasi YARN dan HBase pada klaster yang sama. Jenis instance dengan memori kurang dari 64 GB memiliki setengah memori yang tersediaNodeManager, yang kemudian dialokasikan ke HBase. RegionServer Misalnya tipe dengan memori lebih besar dari 64 GB, RegionServer memori HBase dibatasi pada 32 GB. Sebagai aturan umum, memori pengaturan YARN adalah beberapa kelipatan memori MapReduce tugas peredam.

Tabel di [Nilai default untuk pengaturan konfigurasi tugas](emr-hadoop-task-config.md#emr-hadoop-task-jvm) menunjukkan perubahan pengaturan YARN berdasarkan memori yang dibutuhkan untuk HBase.

## Nomor port HBase
<a name="emr-hbase-ports"></a>

Beberapa nomor port yang dipilih untuk HBase berbeda dari default. Berikut ini adalah antarmuka dan port untuk HBase di Amazon EMR.


**Port HBase**  

| Antarmuka | Port | Protokol | 
| --- | --- | --- | 
| HMaster | 16000 | TCP | 
| UI HMaster | 16010 | HTTP | 
| RegionServer | 16020 | TCP | 
| RegionServer Info | 16030 | HTTP | 
| Server REST | 8070 | HTTP | 
| REST UI | 8085 | HTTP | 
| Server penghematan | 9090 | TCP | 
| UI Server penghematan | 9095 | HTTP | 

**penting**  
Adalah `kms-http-port` 9700 dan `kms-admin-port` adalah 9701 di rilis Amazon EMR versi 4.6.0 dan yang lebih baru.

## Pengaturan situs HBase untuk dioptimalkan
<a name="emr-hbase-settings-optimize"></a>

Anda dapat mengatur salah satu atau semua pengaturan situs HBase untuk mengoptimalkan klaster HBase untuk beban kerja aplikasi Anda. Kami merekomendasikan pengaturan berikut sebagai titik awal dalam penyelidikan Anda.

### zookeeper.session.timeout
<a name="emr-hbase-zookeeper.session.timeout"></a>

Waktu habis default adalah 40 detik (40000 ms). Jika server wilayah lumpuh, ini adalah waktu yang dibutuhkan server master untuk menyadari tidak adanya server wilayah dan memulai pemulihan. Untuk membantu server master pulih lebih cepat, Anda dapat mengurangi nilai ini untuk jangka waktu yang lebih singkat. Contoh berikut menggunakan 30 detik, atau 30000 ms: 

```
[
  {
    "Classification":"hbase-site",
    "Properties": {
       "zookeeper.session.timeout": "30000"
    }
  }
]
```

### hbase.regionserver.handler.count
<a name="emr-hbase-hbase.regionserver.handler.count"></a>

Ini menentukan jumlah utas yang tetap dibuka oleh server wilayah untuk melayani permintaan ke tabel. Default 10 rendah, untuk mencegah pengguna agar tidak membunuh server wilayah mereka ketika menggunakan buffer penulisan large dengan jumlah klien bersamaan yang tinggi. Aturan praktis adalah menjaga jumlah ini tetap rendah ketika payload per permintaan mendekati kisaran MB (penempatan besar, memindai menggunakan cache besar) dan tinggi ketika payload kecil (mendapat, menempatkan kecil, ICV, menghapus). Contoh berikut menimbulkan jumlah utas terbuka hingga 30: 

```
[
  {
    "Classification":"hbase-site",
    "Properties": {
       "hbase.regionserver.handler.count": "30"
    }
  }
]
```

### hbase.hregion.max.filesize
<a name="emr-hbase-hbase.hregion.max.filesize"></a>

Parameter ini mengatur ukuran, dalam byte, dari masing-masing wilayah. Secara default, nilainya ditetapkan ke `10737418240`. Jika Anda menulis banyak data ke dalam klaster HBase, dan sering menyebabkan pemisahan, Anda dapat meningkatkan ukuran ini untuk membuat daerah individu lebih besar. Ini meredam pemisahan tetapi membutuhkan lebih banyak waktu untuk wilayah keseimbangan beban dari satu server ke server lain. 

```
[
  {
    "Classification":"hbase-site",
    "Properties": {
       "hbase.hregion.max.filesize": "10737418240"
    }
  }
]
```

### hbase.hregion.memstore.flush.size
<a name="emr-hbase-hbase.hregion.memstore.flush.size"></a>

Parameter ini mengatur ukuran maksimum memstore, dalam byte, sebelum di-flush ke disk. Secara default, itu adalah `134217728`. Jika beban kerja Anda terdiri dari semburan singkat operasi tulis, Anda mungkin ingin meningkatkan batas ini sehingga semua penulisan tetap berada di memori selama semburan dan dipindahkan ke disk nanti. Hal ini dapat meningkatkan performa selama semburan. 

```
[
  {
    "Classification":"hbase-site",
    "Properties": {
       "hbase.hregion.memstore.flush.size": "134217728"
    }
  }
]
```

## Pertimbangan performa
<a name="hbase-performance-considerations"></a>

### Mengaktifkan Z Garbage Collector (ZGC) untuk HBase
<a name="hbase-performance-considerations-enable"></a>

Dengan Amazon EMR versi 7.10.0 dan yang lebih baru, pengguna dapat dengan mulus mengonfigurasi pengaturan pengumpulan sampah (GC) untuk cluster HBase mereka. Sebaiknya aktifkan Z Garbage Collector (ZGC) untuk mencapai waktu jeda GC latensi rendah dan sub-milidetik.

Berikut konfigurasi untuk mengaktifkan ZGC untuk HB RegionServer ase:

```
[
    {
        "Classification": "hbase-env",
        "Properties": {},
        "Configurations": [
            {
                "Classification": "export",
                "Properties": {
                    "JAVA_HOME": "/usr/lib/jvm/jre-21",
                    "HBASE_REGIONSERVER_GC_OPTS": "\"-XX:+UseZGC -XX:+ZGenerational\""
                }
            }
        ]
    }
]
```

**catatan**  
Variabel ** lingkungan ** JAVA\_HOME harus disetel saat menggunakan Generational ZGC (disarankan) karena diperkenalkan di JDK 21, jika Anda ingin menggunakan mode non-generasi (tanpa`-XX:+ZGenerational`) ZGC tidak perlu mengatur JAVA\_HOME. ** ** Di JDK 24, mode non-generasi ZGC telah dihapus.

#### Penyetelan ZGC
<a name="hbase-performance-considerations-tuning-"></a>

1. **Aktifkan JVM Fixed Heap **

   Z Garbage Collector (ZGC) bekerja lebih efisien ketika dikonfigurasi dengan memori heap tetap, menghilangkan overhead mengembalikan memori ke sistem operasi. Untuk mengonfigurasi memori heap tetap untuk cluster HBase Anda, gunakan konfigurasi berikut:

   ```
   [
       {
           "Classification": "hbase",
           "Properties": {
               "hbase.regionserver.fixed.heap.enabled": "true"
           }
       }
   ]
   ```

1. **Aktifkan Pre-touch**

   Mengaktifkan pra-sentuh meningkatkan kinerja pengumpulan sampah (GC) dengan mengurangi latensi awal dan memberikan kinerja yang lebih dapat diprediksi. Untuk mengaktifkan pra-sentuh untuk Cluster HBase Anda, gunakan konfigurasi berikut:

   ```
   [
       {
           "Classification": "hbase-env",
           "Properties": {},
           "Configurations": [
               {
                   "Classification": "export",
                   "Properties": {
                       "JAVA_HOME": "/usr/lib/jvm/jre-21",
                       "HBASE_REGIONSERVER_GC_OPTS": "\"-XX:+UseZGC -XX:+ZGenerational -XX:+AlwaysPreTouch\""
                   }
               }
           ]
       }
   ]
   ```