HBase
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> HBase

HBase:5 mẹo để chạy trên EC2 bộ nhớ thấp

Khi chạy trên EC2, bạn thường không thể thắng khi nói đến các loại phiên bản. Một trong những loại hiệu quả hơn về chi phí hiện có là c1.xlarge. Nó có đủ CPU để xử lý các giao dịch, một lượng đĩa khá lớn và I / O mạng cao. Tuy nhiên, chúng tôi nhận thấy rằng bộ nhớ tương đối thấp 7GB trên c1.xlarge thường dẫn đến các vấn đề về độ ổn định trong các cụm HBase đồng thời cao. Mặc dù có những tùy chọn khác đắt tiền hơn, nhưng hướng dẫn HBase này sẽ giúp bạn tận dụng tối đa các Máy chủ Vùng c1.xlarge của mình.

1. Giảm số lượng khu vực trên mỗi Máy chủ khu vực

Lý tưởng nhất là bạn nên có ít hơn 100 vùng cho mỗi Máy chủ vùng . Kho lưu trữ được chia để sử dụng cho tất cả các vùng đang hoạt động và mỗi vùng sẽ thêm (theo mặc định) 2MB bộ nhớ cho MSLAB. Việc cắt giảm con số này sẽ giúp mọi thứ chạy trơn tru chứ không chỉ từ quan điểm bộ nhớ.

2. Đánh cắp bộ nhớ từ các dịch vụ khác

Bạn chắc chắn không nên chạy TaskTracker với Máy chủ khu vực của mình trên các loại phiên bản này, nhưng rất có thể bạn đang chạy một DataNode cục bộ. Một cấu hình thông thường yêu cầu 1GB bộ nhớ cho Mã dữ liệu, nhưng chúng tôi nhận thấy rằng bạn không cần nhiều như vậy trong nhiều trường hợp. Xác minh các chỉ số của bạn trước khi triển khai tính năng này, nhưng chúng tôi hoàn toàn an toàn khi cắt đống DataNode xuống 400MB . Đoạn mã 624MB đẹp đẽ này sẽ giúp HBase tiến xa hơn một chút.

3. Điều chỉnh hoặc tắt MSLAB

Nếu sau khi đánh cắp bộ nhớ và cắt bớt vùng mà bạn vẫn gặp sự cố, bạn có thể tiến thêm một bước. Giống như tôi đã đề cập, tính năng MSLAB thêm 2MB chi phí heap theo mặc định cho mỗi khu vực. Bạn có thể điều chỉnh bộ đệm này xuống với hbase.hregion.memstore.mslab.chunksize . Bạn càng xuống thấp thì hiệu quả càng kém, nhưng chi phí bộ nhớ cũng ít hơn. Tắt hoàn toàn nó bằng hbase.hregion.memstore.mslab.enabled .

4. Tích cực về bộ nhớ đệm và phân lô

Bộ nhớ đệm (Scan#setCaching(int) ) và theo lô (Scan#setBatch(int) ) rất tốt để hạn chế ảnh hưởng của độ trễ mạng khi quét lớn. Thật không may, chúng cũng yêu cầu nhiều bộ nhớ hơn ở cả phía máy khách và máy chủ. Hãy nhớ đánh đổi tốc độ, nhưng hãy tận hưởng sự ổn định hơn một chút bằng cách điều chỉnh chúng , gần với giá trị 1 nếu cần.

Máy chủ vùng cũng phải có đủ bộ nhớ để xử lý tất cả các lần ghi đồng thời của bạn. Nếu bạn thực hiện nhiều lần ghi hoặc gửi một vài giá trị ô rất lớn, bạn có thể gặp phải OutOfMemoryExceptions. Hạ lô của bạn ở đây hoặc bằng cách khác, tìm cách thu nhỏ kích thước của các giá trị ô của bạn.

5. Kiểm soát tải từ Hadoop

Nếu bạn đang chạy công việc hadoop dựa trên dữ liệu HBase của mình, về cơ bản bạn đang chạy rất nhiều lần quét lớn. Trong công việc HBase MapReduce, mỗi vùng sẽ trở thành một ánh xạ. Nếu bạn có nhiều hơn 1 khu vực trên mỗi Máy chủ khu vực, rất có thể bạn sẽ có một vài người lập bản đồ quét cùng một Máy chủ khu vực đồng thời vào một thời điểm nào đó. Mỗi lần quét này đều chiếm tài nguyên bộ nhớ, đĩa và CPU và khi nhiều lần quét tích tụ, nó có thể gây ra một số khó khăn.

Hạ hbase.regionserver.handler.count sẽ giúp hạn chế số lượng kết nối đang hoạt động chiếm bộ nhớ, nhưng bạn vẫn có thể gặp sự cố nếu tất cả các trình xử lý đang xử lý quét toàn vùng lớn. Sử dụng tiện ích mở rộng TableInputFormat của chúng tôi, bạn có thể dễ dàng kiểm soát số lượng trình ánh xạ đồng thời chạy trên một Máy chủ vùng , cung cấp mức sử dụng bộ nhớ dễ đoán hơn.

Nếu bạn đang viết thư cho HBase từ một bộ giảm tốc, bạn cũng sẽ muốn kiểm soát việc phân vùng ở đó. Điều này được thực hiện dễ dàng bằng cách sử dụng Partitioner của Hadoop giao diện, với HBaseAdmin của HBase giao diện cung cấp khu vực cho các ánh xạ RegionServer.

Chạy HBase trên bộ nhớ thấp là khó, nhưng không phải là không thể

Với những mẹo này trong tay, bạn sẽ có thể sống sót sau các hoạt động trong môi trường bộ nhớ thấp của mình. Có thể bực bội khi phải tranh giành từng megabyte bộ nhớ trong thời đại RAM cực rẻ và nhanh. Nhưng hãy làm theo các mẹo này và giám đốc tài chính của bạn sẽ cảm ơn bạn vì đã tận dụng tối đa loại phiên bản hiệu quả về chi phí này. Đối với những người có tài chính tự do hơn một chút, chúng tôi sẽ khám phá tác động của các loại phiên bản I2 mới của Amazon trong một bài đăng trong tương lai . Vì vậy, hãy chú ý theo dõi!

Bài viết này ban đầu xuất hiện trên dev.hubspot.com


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bộ đếm Hadoop &Các loại bộ đếm trong MapReduce

  2. Xây dựng quy trình có thể mở rộng bằng NiFi, Kafka và HBase trên CDP

  3. InputSplit trong Hadoop MapReduce là gì?

  4. 6 tính năng hàng đầu của HDFS - Hướng dẫn sử dụng Hadoop HDFS

  5. Spark HBase Connector - Một năm được đánh giá