HBase - Hướng dẫn nhanh

Kể từ năm 1970, RDBMS là giải pháp cho các vấn đề liên quan đến lưu trữ và bảo trì dữ liệu. Sau sự ra đời của dữ liệu lớn, các công ty nhận ra lợi ích của việc xử lý dữ liệu lớn và bắt đầu chọn các giải pháp như Hadoop.

Hadoop sử dụng hệ thống tệp phân tán để lưu trữ dữ liệu lớn và MapReduce để xử lý nó. Hadoop vượt trội trong việc lưu trữ và xử lý dữ liệu khổng lồ ở nhiều định dạng khác nhau như tùy ý, bán hoặc thậm chí không có cấu trúc.

Hạn chế của Hadoop

Hadoop chỉ có thể thực hiện xử lý hàng loạt và dữ liệu sẽ chỉ được truy cập theo cách tuần tự. Điều đó có nghĩa là người ta phải tìm kiếm toàn bộ tập dữ liệu ngay cả những công việc đơn giản nhất.

Một tập dữ liệu khổng lồ khi được xử lý dẫn đến một tập dữ liệu khổng lồ khác, tập dữ liệu này cũng cần được xử lý tuần tự. Tại thời điểm này, một giải pháp mới là cần thiết để truy cập bất kỳ điểm dữ liệu nào trong một đơn vị thời gian (truy cập ngẫu nhiên).

Cơ sở dữ liệu truy cập ngẫu nhiên Hadoop

Các ứng dụng như HBase, Cassandra, couchDB, Dynamo và MongoDB là một số cơ sở dữ liệu lưu trữ lượng lớn dữ liệu và truy cập dữ liệu một cách ngẫu nhiên.

HBase là gì?

HBase là một cơ sở dữ liệu hướng cột phân tán được xây dựng trên hệ thống tệp Hadoop. Nó là một dự án mã nguồn mở và có thể mở rộng theo chiều ngang.

HBase là một mô hình dữ liệu tương tự như bảng lớn của Google được thiết kế để cung cấp khả năng truy cập ngẫu nhiên nhanh chóng vào lượng dữ liệu có cấu trúc khổng lồ. Nó tận dụng khả năng chịu lỗi được cung cấp bởi Hệ thống tệp Hadoop (HDFS).

Đây là một phần của hệ sinh thái Hadoop cung cấp quyền truy cập đọc / ghi ngẫu nhiên theo thời gian thực vào dữ liệu trong Hệ thống tệp Hadoop.

Người ta có thể lưu trữ dữ liệu trong HDFS trực tiếp hoặc thông qua HBase. Người tiêu dùng dữ liệu đọc / truy cập dữ liệu trong HDFS một cách ngẫu nhiên bằng cách sử dụng HBase. HBase nằm trên Hệ thống Tệp Hadoop và cung cấp quyền truy cập đọc và ghi.

HBase và HDFS

HDFS HBase
HDFS là một hệ thống tệp phân tán thích hợp để lưu trữ các tệp lớn. HBase là một cơ sở dữ liệu được xây dựng trên HDFS.
HDFS không hỗ trợ tra cứu hồ sơ cá nhân nhanh chóng. HBase cung cấp tra cứu nhanh cho các bảng lớn hơn.
Nó cung cấp xử lý hàng loạt có độ trễ cao; không có khái niệm về xử lý hàng loạt. Nó cung cấp khả năng truy cập độ trễ thấp vào các hàng đơn từ hàng tỷ bản ghi (Truy cập ngẫu nhiên).
Nó chỉ cung cấp quyền truy cập tuần tự dữ liệu. HBase sử dụng nội bộ bảng Hash và cung cấp quyền truy cập ngẫu nhiên, đồng thời nó lưu trữ dữ liệu trong các tệp HDFS được lập chỉ mục để tra cứu nhanh hơn.

Cơ chế lưu trữ trong HBase

HBase là một column-oriented databasevà các bảng trong đó được sắp xếp theo hàng. Lược đồ bảng chỉ xác định các họ cột, là các cặp giá trị khóa. Một bảng có nhiều họ cột và mỗi họ cột có thể có bất kỳ số lượng cột nào. Các giá trị cột tiếp theo được lưu trữ liền kề trên đĩa. Mỗi giá trị ô của bảng có một dấu thời gian. Tóm lại, trong một HBase:

  • Bảng là một tập hợp các hàng.
  • Hàng là một tập hợp các họ cột.
  • Họ cột là một tập hợp các cột.
  • Cột là một tập hợp các cặp giá trị khóa.

Dưới đây là một lược đồ ví dụ về bảng trong HBase.

Rowid Họ cột Họ cột Họ cột Họ cột
col1 col2 col3 col1 col2 col3 col1 col2 col3 col1 col2 col3
1
2
3

Định hướng cột và hướng hàng

Cơ sở dữ liệu hướng theo cột là những cơ sở dữ liệu lưu trữ bảng dữ liệu dưới dạng các phần của cột dữ liệu, chứ không phải dưới dạng hàng dữ liệu. Trong thời gian ngắn, họ sẽ có họ cột.

Cơ sở dữ liệu hướng hàng Cơ sở dữ liệu hướng theo cột
Nó phù hợp với Quy trình giao dịch trực tuyến (OLTP). Nó phù hợp cho Xử lý Phân tích Trực tuyến (OLAP).
Cơ sở dữ liệu như vậy được thiết kế cho số lượng hàng và cột nhỏ. Cơ sở dữ liệu hướng cột được thiết kế cho các bảng lớn.

Hình ảnh sau đây cho thấy các họ cột trong cơ sở dữ liệu hướng cột:

HBase và RDBMS

HBase RDBMS
HBase không có giản đồ, nó không có khái niệm về lược đồ cột cố định; chỉ xác định họ cột. Một RDBMS được điều chỉnh bởi lược đồ của nó, lược đồ này mô tả toàn bộ cấu trúc của các bảng.
Nó được xây dựng cho các bảng rộng. HBase có thể mở rộng theo chiều ngang. Nó mỏng và được xây dựng cho các bàn nhỏ. Khó mở rộng quy mô.
Không có giao dịch nào trong HBase. RDBMS là giao dịch.
Nó đã khử chuẩn hóa dữ liệu. Nó sẽ có dữ liệu chuẩn hóa.
Nó tốt cho dữ liệu bán cấu trúc cũng như có cấu trúc. Nó tốt cho dữ liệu có cấu trúc.

Đặc điểm của HBase

  • HBase có thể mở rộng tuyến tính.
  • Nó có hỗ trợ lỗi tự động.
  • Nó cung cấp khả năng đọc và ghi nhất quán.
  • Nó tích hợp với Hadoop, vừa là nguồn vừa là đích.
  • Nó có API java dễ dàng cho khách hàng.
  • Nó cung cấp sao chép dữ liệu giữa các cụm.

Sử dụng HBase ở đâu

  • Apache HBase được sử dụng để có quyền truy cập đọc / ghi ngẫu nhiên trong thời gian thực vào Dữ liệu lớn.

  • Nó lưu trữ các bảng rất lớn trên đầu các cụm phần cứng hàng hóa.

  • Apache HBase là một cơ sở dữ liệu phi quan hệ được mô phỏng theo Bigtable của Google. Bigtable hoạt động trên Hệ thống tệp của Google, tương tự như vậy, Apache HBase hoạt động trên Hadoop và HDFS.

Các ứng dụng của HBase

  • Nó được sử dụng bất cứ khi nào có nhu cầu viết các ứng dụng nặng.
  • HBase được sử dụng bất cứ khi nào chúng ta cần cung cấp quyền truy cập ngẫu nhiên nhanh chóng vào dữ liệu có sẵn.
  • Các công ty như Facebook, Twitter, Yahoo và Adobe sử dụng HBase trong nội bộ.

Lịch sử HBase

Năm Biến cố
Tháng 11 năm 2006 Google đã phát hành bài báo trên BigTable.
Tháng 2 năm 2007 Nguyên mẫu HBase ban đầu được tạo ra như một đóng góp của Hadoop.
Tháng 10 năm 2007 HBase có thể sử dụng đầu tiên cùng với Hadoop 0.15.0 đã được phát hành.
Tháng 1 năm 2008 HBase trở thành dự án con của Hadoop.
Tháng 10 năm 2008 HBase 0.18.1 đã được phát hành.
Tháng 1 năm 2009 HBase 0.19.0 đã được phát hành.
Tháng 9 năm 2009 HBase 0.20.0 đã được phát hành.
Tháng 5 năm 2010 HBase trở thành dự án cấp cao nhất của Apache.

Trong HBase, các bảng được chia thành các vùng và được phục vụ bởi các máy chủ vùng. Các khu vực được chia theo chiều dọc theo họ cột thành "Cửa hàng". Các cửa hàng được lưu dưới dạng tệp trong HDFS. Hình dưới đây là kiến ​​trúc của HBase.

Note: Thuật ngữ 'cửa hàng' được sử dụng cho các khu vực để giải thích cấu trúc lưu trữ.

HBase có ba thành phần chính: thư viện máy khách, máy chủ chính và máy chủ khu vực. Máy chủ khu vực có thể được thêm vào hoặc loại bỏ theo yêu cầu.

MasterServer

Máy chủ chính -

  • Chỉ định các khu vực cho các máy chủ khu vực và nhờ sự trợ giúp của Apache ZooKeeper cho nhiệm vụ này.

  • Xử lý cân bằng tải của các khu vực trên các máy chủ khu vực. Nó dỡ bỏ các máy chủ bận rộn và chuyển vùng sang các máy chủ ít bị chiếm dụng hơn.

  • Duy trì trạng thái của cụm bằng cách thỏa thuận cân bằng tải.

  • Chịu trách nhiệm về các thay đổi lược đồ và các hoạt động siêu dữ liệu khác như tạo bảng và họ cột.

Vùng

Các khu vực không là gì ngoài các bảng được chia nhỏ và trải rộng trên các máy chủ của khu vực.

Máy chủ khu vực

Máy chủ khu vực có các khu vực -

  • Giao tiếp với máy khách và xử lý các hoạt động liên quan đến dữ liệu.
  • Xử lý các yêu cầu đọc và ghi cho tất cả các vùng dưới nó.
  • Quyết định kích thước của vùng bằng cách tuân theo các ngưỡng kích thước vùng.

Khi chúng tôi xem xét sâu hơn máy chủ khu vực, nó chứa các khu vực và cửa hàng như được hiển thị bên dưới:

Kho chứa bộ nhớ lưu trữ và HFiles. Memstore giống như một bộ nhớ đệm. Bất cứ thứ gì được nhập vào HBase đều được lưu trữ ở đây ban đầu. Sau đó, dữ liệu được chuyển và lưu trong Hfiles dưới dạng khối và kho lưu trữ được xóa.

Người giữ vườn thú

  • Zookeeper là một dự án mã nguồn mở cung cấp các dịch vụ như duy trì thông tin cấu hình, đặt tên, cung cấp đồng bộ hóa phân tán, v.v.

  • Zookeeper có các nút tạm thời đại diện cho các máy chủ khu vực khác nhau. Máy chủ chính sử dụng các nút này để khám phá các máy chủ có sẵn.

  • Ngoài tính khả dụng, các nút cũng được sử dụng để theo dõi lỗi máy chủ hoặc phân vùng mạng.

  • Khách hàng giao tiếp với các máy chủ khu vực thông qua người giữ vườn thú.

  • Trong các chế độ giả và độc lập, bản thân HBase sẽ chăm sóc người trông coi vườn thú.

Chương này giải thích cách HBase được cài đặt và cấu hình ban đầu. Java và Hadoop được yêu cầu để tiếp tục với HBase, vì vậy bạn phải tải xuống và cài đặt java và Hadoop trong hệ thống của mình.

Cài đặt trước cài đặt

Trước khi cài đặt Hadoop vào môi trường Linux, chúng ta cần thiết lập Linux bằng ssh(Vỏ an toàn). Làm theo các bước dưới đây để thiết lập môi trường Linux.

Tạo người dùng

Trước hết, bạn nên tạo một người dùng riêng cho Hadoop để cô lập hệ thống tệp Hadoop khỏi hệ thống tệp Unix. Làm theo các bước dưới đây để tạo người dùng.

  • Mở thư mục gốc bằng lệnh “su”.
  • Tạo người dùng từ tài khoản gốc bằng lệnh “useradd username”.
  • Bây giờ bạn có thể mở một tài khoản người dùng hiện có bằng lệnh “su username”.

Mở thiết bị đầu cuối Linux và nhập các lệnh sau để tạo người dùng.

$ su
password:
# useradd hadoop
# passwd hadoop
New passwd:
Retype new passwd

Thiết lập SSH và tạo khóa

Thiết lập SSH được yêu cầu để thực hiện các hoạt động khác nhau trên cụm như bắt đầu, dừng và các hoạt động trình bao daemon phân tán. Để xác thực những người dùng khác nhau của Hadoop, cần phải cung cấp cặp khóa công khai / riêng tư cho người dùng Hadoop và chia sẻ nó với những người dùng khác nhau.

Các lệnh sau được sử dụng để tạo cặp giá trị khóa bằng SSH. Sao chép các khóa công khai biểu mẫu id_rsa.pub vào allow_keys và cung cấp cho chủ sở hữu, quyền đọc và ghi đối với tệp ủy quyền.

$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 0600 ~/.ssh/authorized_keys

Xác minh ssh

ssh localhost

Cài đặt Java

Java là điều kiện tiên quyết chính cho Hadoop và HBase. Trước hết, bạn nên xác minh sự tồn tại của java trong hệ thống của mình bằng cách sử dụng “java -version”. Cú pháp của lệnh phiên bản java được đưa ra dưới đây.

$ java -version

Nếu mọi thứ hoạt động tốt, nó sẽ cung cấp cho bạn kết quả sau.

java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

Nếu java chưa được cài đặt trong hệ thống của bạn, hãy làm theo các bước dưới đây để cài đặt java.

Bước 1

Tải xuống java (JDK <phiên bản mới nhất> - X64.tar.gz) bằng cách truy cập liên kết sau Oracle Java .

Sau đó jdk-7u71-linux-x64.tar.gz sẽ được tải xuống hệ thống của bạn.

Bước 2

Nói chung, bạn sẽ tìm thấy tệp java đã tải xuống trong thư mục Tải xuống. Xác minh nó và trích xuấtjdk-7u71-linux-x64.gz sử dụng các lệnh sau.

$ cd Downloads/
$ ls jdk-7u71-linux-x64.gz $ tar zxf jdk-7u71-linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-linux-x64.gz

Bước 3

Để cung cấp java cho tất cả người dùng, bạn phải di chuyển nó đến vị trí “/ usr / local /”. Mở root và nhập các lệnh sau.

$ su
password:
# mv jdk1.7.0_71 /usr/local/
# exit

Bước 4

Để thiết lập PATHJAVA_HOME biến, thêm các lệnh sau vào ~/.bashrc tập tin.

export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH= $PATH:$JAVA_HOME/bin

Bây giờ áp dụng tất cả các thay đổi vào hệ thống đang chạy hiện tại.

$ source ~/.bashrc

Bước 5

Sử dụng các lệnh sau để định cấu hình các lựa chọn thay thế java:

# alternatives --install /usr/bin/java java usr/local/java/bin/java 2

# alternatives --install /usr/bin/javac javac usr/local/java/bin/javac 2

# alternatives --install /usr/bin/jar jar usr/local/java/bin/jar 2


# alternatives --set java usr/local/java/bin/java

# alternatives --set javac usr/local/java/bin/javac

# alternatives --set jar usr/local/java/bin/jar

Bây giờ xác minh java -version lệnh từ thiết bị đầu cuối như đã giải thích ở trên.

Tải xuống Hadoop

Sau khi cài đặt java, bạn phải cài đặt Hadoop. Trước hết, hãy xác minh sự tồn tại của Hadoop bằng lệnh “Hadoop version” như hình dưới đây.

hadoop version

Nếu mọi thứ hoạt động tốt, nó sẽ cung cấp cho bạn kết quả sau.

Hadoop 2.6.0
Compiled by jenkins on 2014-11-13T21:10Z
Compiled with protoc 2.5.0
From source with checksum 18e43357c8f927c0695f1e9522859d6a
This command was run using
/home/hadoop/hadoop/share/hadoop/common/hadoop-common-2.6.0.jar

Nếu hệ thống của bạn không thể định vị Hadoop, hãy tải xuống Hadoop trong hệ thống của bạn. Làm theo các lệnh dưới đây để làm như vậy.

Tải xuống và giải nén hadoop-2.6.0 từ Apache Software Foundation bằng các lệnh sau.

$ su
password:
# cd /usr/local
# wget http://mirrors.advancedhosters.com/apache/hadoop/common/hadoop-
2.6.0/hadoop-2.6.0-src.tar.gz
# tar xzf hadoop-2.6.0-src.tar.gz
# mv hadoop-2.6.0/* hadoop/
# exit

Cài đặt Hadoop

Cài đặt Hadoop ở bất kỳ chế độ nào được yêu cầu. Ở đây, chúng tôi đang trình bày các chức năng của HBase trong chế độ phân tán giả, do đó hãy cài đặt Hadoop ở chế độ phân phối giả.

Các bước sau được sử dụng để cài đặt Hadoop 2.4.1.

Bước 1 - Thiết lập Hadoop

Bạn có thể đặt các biến môi trường Hadoop bằng cách thêm các lệnh sau vào ~/.bashrc tập tin.

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_INSTALL=$HADOOP_HOME

Bây giờ áp dụng tất cả các thay đổi vào hệ thống đang chạy hiện tại.

$ source ~/.bashrc

Bước 2 - Cấu hình Hadoop

Bạn có thể tìm thấy tất cả các tệp cấu hình Hadoop ở vị trí “$ HADOOP_HOME / etc / hadoop”. Bạn cần thực hiện các thay đổi trong các tệp cấu hình đó theo cơ sở hạ tầng Hadoop của mình.

$ cd $HADOOP_HOME/etc/hadoop

Để phát triển các chương trình Hadoop trong java, bạn phải đặt lại biến môi trường java trong hadoop-env.sh tập tin bằng cách thay thế JAVA_HOME giá trị với vị trí của java trong hệ thống của bạn.

export JAVA_HOME=/usr/local/jdk1.7.0_71

Bạn sẽ phải chỉnh sửa các tệp sau để định cấu hình Hadoop.

core-site.xml

Các core-site.xml tệp chứa thông tin như số cổng được sử dụng cho phiên bản Hadoop, bộ nhớ được cấp phát cho hệ thống tệp, giới hạn bộ nhớ để lưu trữ dữ liệu và kích thước của bộ đệm Đọc / Ghi.

Mở core-site.xml và thêm các thuộc tính sau vào giữa các thẻ <configuration> và </configuration>.

<configuration>
   <property>
      <name>fs.default.name</name>
      <value>hdfs://localhost:9000</value>
   </property>
</configuration>

hdfs-site.xml

Các hdfs-site.xml tệp chứa thông tin như giá trị của dữ liệu sao chép, đường dẫn nút tên và đường dẫn nút dữ liệu của hệ thống tệp cục bộ của bạn, nơi bạn muốn lưu trữ cơ sở hạ tầng Hadoop.

Hãy để chúng tôi giả sử dữ liệu sau đây.

dfs.replication (data replication value) = 1
(In the below given path /hadoop/ is the user name.
hadoopinfra/hdfs/namenode is the directory created by hdfs file system.)

namenode path = //home/hadoop/hadoopinfra/hdfs/namenode
(hadoopinfra/hdfs/datanode is the directory created by hdfs file system.)

datanode path = //home/hadoop/hadoopinfra/hdfs/datanode

Mở tệp này và thêm các thuộc tính sau vào giữa các thẻ <configuration>, </configuration>.

<configuration>
   <property>
      <name>dfs.replication</name >
      <value>1</value>
   </property>
	
   <property>
      <name>dfs.name.dir</name>
      <value>file:///home/hadoop/hadoopinfra/hdfs/namenode</value>
   </property>
	
   <property>
      <name>dfs.data.dir</name>
      <value>file:///home/hadoop/hadoopinfra/hdfs/datanode</value>
   </property>
</configuration>

Note: Trong tệp ở trên, tất cả các giá trị thuộc tính do người dùng xác định và bạn có thể thực hiện các thay đổi theo cơ sở hạ tầng Hadoop của mình.

yarn-site.xml

Tệp này được sử dụng để cấu hình sợi thành Hadoop. Mở tệp fiber-site.xml và thêm thuộc tính sau vào giữa <config $ gt ;, </ configuration $ gt; trong tệp này.

<configuration>
   <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
   </property>
</configuration>

mapred-site.xml

Tệp này được sử dụng để chỉ định khung MapReduce mà chúng tôi đang sử dụng. Theo mặc định, Hadoop chứa một mẫu sợi-site.xml. Trước hết, cần phải sao chép tệp từmapred-site.xml.template đến mapred-site.xml sử dụng lệnh sau.

$ cp mapred-site.xml.template mapred-site.xml

Mở mapred-site.xml và thêm các thuộc tính sau vào giữa thẻ <configuration> và </configuration>.

<configuration>
   <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
   </property>
</configuration>

Xác minh cài đặt Hadoop

Các bước sau được sử dụng để xác minh cài đặt Hadoop.

Bước 1 - Thiết lập nút đặt tên

Thiết lập nút tên bằng lệnh “hdfs namenode -format” như sau.

$ cd ~ $ hdfs namenode -format

Kết quả mong đợi như sau.

10/24/14 21:30:55 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = localhost/192.168.1.11
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 2.4.1
...
...
10/24/14 21:30:56 INFO common.Storage: Storage directory
/home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted.
10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: Going to
retain 1 images with txid >= 0
10/24/14 21:30:56 INFO util.ExitUtil: Exiting with status 0
10/24/14 21:30:56 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at localhost/192.168.1.11
************************************************************/

Bước 2 - Xác minh dfs Hadoop

Lệnh sau được sử dụng để bắt đầu dfs. Thực thi lệnh này sẽ khởi động hệ thống tệp Hadoop của bạn.

$ start-dfs.sh

Sản lượng dự kiến ​​như sau.

10/24/14 21:37:56
Starting namenodes on [localhost]
localhost: starting namenode, logging to /home/hadoop/hadoop-
2.4.1/logs/hadoop-hadoop-namenode-localhost.out
localhost: starting datanode, logging to /home/hadoop/hadoop-
2.4.1/logs/hadoop-hadoop-datanode-localhost.out
Starting secondary namenodes [0.0.0.0]

Bước 3 - Xác minh Tập lệnh Sợi

Lệnh sau được sử dụng để bắt đầu tập lệnh sợi. Việc thực thi lệnh này sẽ bắt đầu các daemon sợi của bạn.

$ start-yarn.sh

Sản lượng dự kiến ​​như sau.

starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop-
2.4.1/logs/yarn-hadoop-resourcemanager-localhost.out
localhost: starting nodemanager, logging to /home/hadoop/hadoop-
2.4.1/logs/yarn-hadoop-nodemanager-localhost.out

Bước 4 - Truy cập Hadoop trên trình duyệt

Số cổng mặc định để truy cập Hadoop là 50070. Sử dụng url sau để tải các dịch vụ Hadoop trên trình duyệt của bạn.

http://localhost:50070

Bước 5 - Xác minh tất cả các ứng dụng của cụm

Số cổng mặc định để truy cập tất cả các ứng dụng của cụm là 8088. Sử dụng url sau để truy cập dịch vụ này.

http://localhost:8088/

Cài đặt HBase

Chúng tôi có thể cài đặt HBase ở bất kỳ chế độ nào trong ba chế độ: Chế độ độc lập, Chế độ giả phân tán và Chế độ phân phối hoàn toàn.

Cài đặt HBase ở chế độ độc lập

Tải xuống phiên bản ổn định mới nhất của biểu mẫu HBase http://www.interior-dsgn.com/apache/hbase/stable/sử dụng lệnh “wget” và giải nén nó bằng lệnh tar “zxvf”. Xem lệnh sau.

$cd usr/local/ $wget http://www.interior-dsgn.com/apache/hbase/stable/hbase-0.98.8-
hadoop2-bin.tar.gz
$tar -zxvf hbase-0.98.8-hadoop2-bin.tar.gz

Chuyển sang chế độ siêu người dùng và di chuyển thư mục HBase sang / usr / local như hình dưới đây.

$su
$password: enter your password here
mv hbase-0.99.1/* Hbase/

Cấu hình HBase ở chế độ độc lập

Trước khi tiếp tục với HBase, bạn phải chỉnh sửa các tệp sau và cấu hình HBase.

hbase-env.sh

Đặt Trang chủ java cho HBase và mở hbase-env.shtệp từ thư mục conf. Chỉnh sửa biến môi trường JAVA_HOME và thay đổi đường dẫn hiện có thành biến JAVA_HOME hiện tại của bạn như hình bên dưới.

cd /usr/local/Hbase/conf
gedit hbase-env.sh

Thao tác này sẽ mở tệp env.sh của HBase. Bây giờ thay thế hiện tạiJAVA_HOME giá trị với giá trị hiện tại của bạn như hình dưới đây.

export JAVA_HOME=/usr/lib/jvm/java-1.7.0

hbase-site.xml

Đây là tệp cấu hình chính của HBase. Đặt thư mục dữ liệu đến một vị trí thích hợp bằng cách mở thư mục chính HBase trong / usr / local / HBase. Bên trong thư mục conf, bạn sẽ tìm thấy một số tệp, hãy mởhbase-site.xml như hình bên dưới.

#cd /usr/local/HBase/
#cd conf
# gedit hbase-site.xml

Bên trong hbase-site.xml, bạn sẽ tìm thấy các thẻ <configuration> và </configuration>. Bên trong chúng, đặt thư mục HBase dưới khóa thuộc tính với tên “hbase.rootdir” như hình dưới đây.

<configuration>
   //Here you have to set the path where you want HBase to store its files.
   <property>
      <name>hbase.rootdir</name>
      <value>file:/home/hadoop/HBase/HFiles</value>
   </property>
	
   //Here you have to set the path where you want HBase to store its built in zookeeper  files.
   <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>/home/hadoop/zookeeper</value>
   </property>
</configuration>

Với điều này, phần cài đặt và cấu hình HBase đã hoàn tất thành công. Chúng ta có thể bắt đầu HBase bằng cách sử dụngstart-hbase.shtập lệnh được cung cấp trong thư mục bin của HBase. Đối với điều đó, hãy mở Thư mục Trang chủ HBase và chạy tập lệnh khởi động HBase như hình dưới đây.

$cd /usr/local/HBase/bin
$./start-hbase.sh

Nếu mọi thứ suôn sẻ, khi bạn cố gắng chạy tập lệnh khởi động HBase, nó sẽ nhắc bạn một thông báo rằng HBase đã bắt đầu.

starting master, logging to /usr/local/HBase/bin/../logs/hbase-tpmaster-localhost.localdomain.out

Cài đặt HBase ở chế độ giả phân tán

Bây giờ chúng ta hãy kiểm tra cách HBase được cài đặt trong chế độ giả phân phối.

Cấu hình HBase

Trước khi tiếp tục với HBase, hãy định cấu hình Hadoop và HDFS trên hệ thống cục bộ của bạn hoặc trên hệ thống từ xa và đảm bảo chúng đang chạy. Dừng HBase nếu nó đang chạy.

hbase-site.xml

Chỉnh sửa tệp hbase-site.xml để thêm các thuộc tính sau.

<property>
   <name>hbase.cluster.distributed</name>
   <value>true</value>
</property>

Nó sẽ đề cập đến HBase nên được chạy ở chế độ nào. Trong cùng một tệp từ hệ thống tệp cục bộ, hãy thay đổi hbase.rootdir, địa chỉ phiên bản HDFS của bạn, sử dụng cú pháp hdfs: //// URI. Chúng tôi đang chạy HDFS trên máy chủ cục bộ tại cổng 8030.

<property>
   <name>hbase.rootdir</name>
   <value>hdfs://localhost:8030/hbase</value>
</property>

Khởi động HBase

Sau khi cấu hình xong, duyệt đến thư mục chính của HBase và khởi động HBase bằng lệnh sau.

$cd /usr/local/HBase
$bin/start-hbase.sh

Note: Trước khi khởi động HBase, hãy đảm bảo Hadoop đang chạy.

Kiểm tra Thư mục HBase trong HDFS

HBase tạo thư mục của nó trong HDFS. Để xem thư mục đã tạo, hãy duyệt đến Hadoop bin và nhập lệnh sau.

$ ./bin/hadoop fs -ls /hbase

Nếu mọi thứ suôn sẻ, nó sẽ cung cấp cho bạn kết quả sau.

Found 7 items
drwxr-xr-x - hbase users 0 2014-06-25 18:58 /hbase/.tmp
drwxr-xr-x - hbase users 0 2014-06-25 21:49 /hbase/WALs
drwxr-xr-x - hbase users 0 2014-06-25 18:48 /hbase/corrupt
drwxr-xr-x - hbase users 0 2014-06-25 18:58 /hbase/data
-rw-r--r-- 3 hbase users 42 2014-06-25 18:41 /hbase/hbase.id
-rw-r--r-- 3 hbase users 7 2014-06-25 18:41 /hbase/hbase.version
drwxr-xr-x - hbase users 0 2014-06-25 21:49 /hbase/oldWALs

Bắt đầu và Dừng một Master

Sử dụng “local-master-backup.sh”, bạn có thể khởi động tối đa 10 máy chủ. Mở thư mục chính của HBase, làm chủ và thực hiện lệnh sau để khởi động nó.

$ ./bin/local-master-backup.sh 2 4

Để tiêu diệt một bản sao lưu, bạn cần id tiến trình của nó, id này sẽ được lưu trữ trong một tệp có tên “/tmp/hbase-USER-X-master.pid.” bạn có thể hủy bản sao lưu bằng lệnh sau.

$ cat /tmp/hbase-user-1-master.pid |xargs kill -9

Khởi động và Dừng Vùng Máy chủ

Bạn có thể chạy nhiều máy chủ khu vực từ một hệ thống bằng cách sử dụng lệnh sau.

$ .bin/local-regionservers.sh start 2 3

Để dừng một máy chủ khu vực, hãy sử dụng lệnh sau.

$ .bin/local-regionservers.sh stop 3

 

Khởi động HBaseShell

Sau khi cài đặt HBase thành công, bạn có thể khởi động HBase Shell. Dưới đây là trình tự các bước cần tuân theo để khởi động trình bao HBase. Mở thiết bị đầu cuối và đăng nhập với tư cách siêu người dùng.

Khởi động hệ thống tệp Hadoop

Duyệt qua thư mục sbin trang chủ Hadoop và khởi động hệ thống tệp Hadoop như hình dưới đây.

$cd $HADOOP_HOME/sbin
$start-all.sh

Khởi động HBase

Duyệt qua thư mục bin thư mục gốc HBase và khởi động HBase.

$cd /usr/local/HBase
$./bin/start-hbase.sh

Khởi động máy chủ HBase Master

Đây sẽ là cùng một thư mục. Bắt đầu nó như hình dưới đây.

$./bin/local-master-backup.sh start 2 (number signifies specific
server.)

Khu vực bắt đầu

Khởi động máy chủ khu vực như hình dưới đây.

$./bin/./local-regionservers.sh start 3

Khởi động vỏ HBase

Bạn có thể khởi động trình bao HBase bằng lệnh sau.

$cd bin
$./hbase shell

Điều này sẽ cung cấp cho bạn HBase Shell Prompt như hình dưới đây.

2014-12-09 14:24:27,526 INFO [main] Configuration.deprecation:
hadoop.native.lib is deprecated. Instead, use io.native.lib.available
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.98.8-hadoop2, r6cfc8d064754251365e070a10a82eb169956d5fe, Fri
Nov 14 18:26:29 PST 2014

hbase(main):001:0>

Giao diện web HBase

Để truy cập giao diện web của HBase, hãy nhập url sau vào trình duyệt.

http://localhost:60010

Giao diện này liệt kê các máy chủ Vùng hiện đang chạy, bản sao dự phòng và bảng HBase.

Máy chủ Khu vực HBase và Trình chủ dự phòng

Bảng HBase

Đặt môi trường Java

Chúng tôi cũng có thể giao tiếp với HBase bằng các thư viện Java, nhưng trước khi truy cập HBase bằng Java API, bạn cần đặt classpath cho các thư viện đó.

Đặt Classpath

Trước khi tiếp tục lập trình, hãy đặt classpath thành các thư viện HBase trong .bashrctập tin. Mở.bashrc trong bất kỳ trình chỉnh sửa nào như được hiển thị bên dưới.

$ gedit ~/.bashrc

Đặt classpath cho các thư viện HBase (thư mục lib trong HBase) trong đó như hình dưới đây.

export CLASSPATH = $CLASSPATH://home/hadoop/hbase/lib/*

Điều này là để ngăn ngoại lệ “không tìm thấy lớp” khi truy cập HBase bằng API java.

Chương này giải thích cách khởi động trình bao tương tác HBase đi kèm với HBase.

Vỏ HBase

HBase chứa một shell sử dụng mà bạn có thể giao tiếp với HBase. HBase sử dụng Hệ thống tệp Hadoop để lưu trữ dữ liệu của nó. Nó sẽ có một máy chủ chính và các máy chủ khu vực. Dữ liệu lưu trữ sẽ ở dạng vùng (bảng). Các vùng này sẽ được chia nhỏ và lưu trữ trong các máy chủ của vùng.

Máy chủ chủ quản lý các máy chủ vùng này và tất cả các tác vụ này diễn ra trên HDFS. Dưới đây là một số lệnh được hỗ trợ bởi HBase Shell.

Các lệnh chung

  • status - Cung cấp trạng thái của HBase, ví dụ, số lượng máy chủ.

  • version - Cung cấp phiên bản HBase đang được sử dụng.

  • table_help - Cung cấp trợ giúp cho các lệnh tham chiếu bảng.

  • whoami - Cung cấp thông tin về người dùng.

Ngôn ngữ định nghĩa dữ liệu

Đây là các lệnh hoạt động trên các bảng trong HBase.

  • create - Tạo một bảng.

  • list - Liệt kê tất cả các bảng trong HBase.

  • disable - Tắt bảng.

  • is_disabled - Xác minh xem một bảng có bị vô hiệu hóa hay không.

  • enable - Cho phép một bảng.

  • is_enabled - Xác minh xem một bảng có được bật hay không.

  • describe - Cung cấp mô tả của một bảng.

  • alter - Làm thay đổi một cái bàn.

  • exists - Xác minh xem một bảng có tồn tại hay không.

  • drop - Bỏ bảng khỏi HBase.

  • drop_all - Bỏ các bảng phù hợp với 'regex' được đưa ra trong lệnh.

  • Java Admin API- Trước tất cả các lệnh trên, Java cung cấp một API quản trị để đạt được các chức năng DDL thông qua lập trình. Dướiorg.apache.hadoop.hbase.client gói, HBaseAdmin và HTableDescriptor là hai lớp quan trọng trong gói này cung cấp các chức năng DDL.

Ngôn ngữ thao tác dữ liệu

  • put - Đặt một giá trị ô tại một cột cụ thể trong một hàng cụ thể trong một bảng cụ thể.

  • get - Tìm nạp nội dung của hàng hoặc ô.

  • delete - Xóa giá trị ô trong bảng.

  • deleteall - Xóa tất cả các ô trong một hàng nhất định.

  • scan - Quét và trả về dữ liệu bảng.

  • count - Đếm và trả về số hàng trong bảng.

  • truncate - Vô hiệu hóa, loại bỏ và tạo lại một bảng được chỉ định.

  • Java client API - Trước tất cả các lệnh trên, Java cung cấp một API ứng dụng khách để đạt được các chức năng DML, CRUD (Tạo Truy xuất Cập nhật Xóa) hoạt động và hơn thế nữa thông qua lập trình, trong gói org.apache.hadoop.hbase.client. HTable PutGet là các lớp quan trọng trong gói này.

Khởi động vỏ HBase

Để truy cập trình bao HBase, bạn phải điều hướng đến thư mục chính của HBase.

cd /usr/localhost/
cd Hbase

Bạn có thể khởi động trình bao tương tác HBase bằng cách sử dụng “hbase shell” lệnh như hình dưới đây.

./bin/hbase shell

Nếu bạn đã cài đặt thành công HBase trong hệ thống của mình, nó sẽ cung cấp cho bạn lời nhắc vỏ HBase như hình dưới đây.

HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.94.23, rf42302b28aceaab773b15f234aa8718fff7eea3c, Wed Aug 27
00:54:09 UTC 2014

hbase(main):001:0>

Để thoát lệnh shell tương tác bất kỳ lúc nào, hãy nhập exit hoặc sử dụng <ctrl + c>. Kiểm tra hoạt động của vỏ trước khi tiếp tục. Sử dụnglist lệnh cho mục đích này. Listlà một lệnh dùng để lấy danh sách tất cả các bảng trong HBase. Trước hết, hãy xác minh cài đặt và cấu hình HBase trong hệ thống của bạn bằng lệnh này như hình dưới đây.

hbase(main):001:0> list

Khi bạn gõ lệnh này, nó sẽ cung cấp cho bạn kết quả sau.

hbase(main):001:0> list
TABLE

Các lệnh chung trong HBase là trạng thái, phiên bản, table_help và whoami. Chương này giải thích các lệnh này.

trạng thái

Lệnh này trả về trạng thái của hệ thống bao gồm thông tin chi tiết của các máy chủ đang chạy trên hệ thống. Cú pháp của nó như sau:

hbase(main):009:0> status

Nếu bạn thực hiện lệnh này, nó sẽ trả về kết quả sau.

hbase(main):009:0> status
3 servers, 0 dead, 1.3333 average load

phiên bản

Lệnh này trả về phiên bản HBase được sử dụng trong hệ thống của bạn. Cú pháp của nó như sau:

hbase(main):010:0> version

Nếu bạn thực hiện lệnh này, nó sẽ trả về kết quả sau.

hbase(main):009:0> version
0.98.8-hadoop2, r6cfc8d064754251365e070a10a82eb169956d5fe, Fri Nov 14
18:26:29 PST 2014

table_help

Lệnh này hướng dẫn bạn những gì và cách sử dụng các lệnh được tham chiếu đến bảng. Dưới đây là cú pháp để sử dụng lệnh này.

hbase(main):02:0> table_help

Khi bạn sử dụng lệnh này, nó sẽ hiển thị các chủ đề trợ giúp cho các lệnh liên quan đến bảng. Dưới đây là kết quả một phần của lệnh này.

hbase(main):002:0> table_help
Help for table-reference commands.
You can either create a table via 'create' and then manipulate the table
via commands like 'put', 'get', etc.
See the standard help information for how to use each of these commands.
However, as of 0.96, you can also get a reference to a table, on which
you can invoke commands.
For instance, you can get create a table and keep around a reference to
it via:
 hbase> t = create 't', 'cf'…...

tôi là ai

Lệnh này trả về chi tiết người dùng của HBase. Nếu bạn thực hiện lệnh này, trả về người dùng HBase hiện tại như hình dưới đây.

hbase(main):008:0> whoami
hadoop (auth:SIMPLE)
groups: hadoop

HBase được viết bằng java, do đó nó cung cấp API java để giao tiếp với HBase. Java API là cách nhanh nhất để giao tiếp với HBase. Dưới đây là API quản trị java được tham chiếu bao gồm các tác vụ được sử dụng để quản lý bảng.

Lớp HBaseAdmin

HBaseAdminlà một lớp đại diện cho Admin. Lớp này thuộc vềorg.apache.hadoop.hbase.clientgói hàng. Sử dụng lớp này, bạn có thể thực hiện các tác vụ của quản trị viên. Bạn có thể lấy phiên bản Admin bằng cách sử dụngConnection.getAdmin() phương pháp.

Phương pháp và Mô tả

Không. Phương pháp và Mô tả
1

void createTable(HTableDescriptor desc)

Tạo một bảng mới.

2

void createTable(HTableDescriptor desc, byte[][] splitKeys)

Tạo một bảng mới với tập hợp các vùng trống ban đầu được xác định bởi các khóa tách được chỉ định.

3

void deleteColumn(byte[] tableName, String columnName)

Xóa một cột khỏi bảng.

4

void deleteColumn(String tableName, String columnName)

Xóa một cột khỏi bảng.

5

void deleteTable(String tableName)

Xóa một bảng.

Bộ mô tả lớp

Lớp này chứa các thông tin chi tiết về bảng HBase như:

  • bộ mô tả của tất cả các họ cột,
  • nếu bảng là một bảng danh mục,
  • nếu bảng chỉ được đọc,
  • kích thước tối đa của mem store,
  • khi sự phân chia khu vực xảy ra,
  • đồng xử lý được liên kết với nó, v.v.

Người xây dựng

Không. Hàm tạo và tóm tắt
1

HTableDescriptor(TableName name)

Xây dựng bộ mô tả bảng chỉ định đối tượng TableName.

Phương pháp và Mô tả

Không. Phương pháp và Mô tả
1

HTableDescriptor addFamily(HColumnDescriptor family)

Thêm họ cột vào bộ mô tả đã cho

Tạo bảng bằng HBase Shell

Bạn có thể tạo một bảng bằng cách sử dụng create, ở đây bạn phải chỉ định tên bảng và tên Dòng cột. Cácsyntax để tạo một bảng trong HBase shell được hiển thị bên dưới.

create ‘<table name>’,’<column family>’

Thí dụ

Dưới đây là một lược đồ mẫu của một bảng có tên là emp. Nó có hai họ cột: "dữ liệu cá nhân" và "dữ liệu chuyên nghiệp".

Phím hàng dữ liệu cá nhân dữ liệu chuyên nghiệp

Bạn có thể tạo bảng này trong HBase shell như hình dưới đây.

hbase(main):002:0> create 'emp', 'personal data', 'professional data'

Và nó sẽ cung cấp cho bạn kết quả sau.

0 row(s) in 1.1300 seconds
=> Hbase::Table - emp

xác minh

Bạn có thể xác minh xem bảng có được tạo bằng cách sử dụng listlệnh như hình dưới đây. Tại đây bạn có thể quan sát bảng emp đã tạo.

hbase(main):002:0> list
TABLE 
emp
2 row(s) in 0.0340 seconds

Tạo bảng bằng API java

Bạn có thể tạo một bảng trong HBase bằng cách sử dụng createTable() phương pháp của HBaseAdminlớp học. Lớp này thuộc vềorg.apache.hadoop.hbase.clientgói hàng. Dưới đây là các bước để tạo bảng trong HBase bằng API java.

Bước 1: Khởi tạo HBaseAdmin

Lớp này yêu cầu đối tượng Cấu hình như một tham số, do đó ban đầu khởi tạo lớp Cấu hình và chuyển thể hiện này cho HBaseAdmin.

Configuration conf = HBaseConfiguration.create();
HBaseAdmin admin = new HBaseAdmin(conf);

Bước 2: Tạo TableDescriptor

HTableDescriptor là một lớp thuộc về org.apache.hadoop.hbaselớp học. Lớp này giống như một vùng chứa tên bảng và họ cột.

//creating table descriptor
HTableDescriptor table = new HTableDescriptor(toBytes("Table name"));

//creating column family descriptor
HColumnDescriptor family = new HColumnDescriptor(toBytes("column family"));

//adding coloumn family to HTable
table.addFamily(family);

Bước 3: Thực thi thông qua Admin

Sử dụng createTable() phương pháp của HBaseAdmin lớp, bạn có thể thực thi bảng đã tạo ở chế độ Quản trị.

admin.createTable(table);

Dưới đây là chương trình hoàn chỉnh để tạo một bảng thông qua quản trị viên.

import java.io.IOException;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.TableName;

import org.apache.hadoop.conf.Configuration;

public class CreateTable {
      
   public static void main(String[] args) throws IOException {

      // Instantiating configuration class
      Configuration con = HBaseConfiguration.create();

      // Instantiating HbaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(con);

      // Instantiating table descriptor class
      HTableDescriptor tableDescriptor = new
      HTableDescriptor(TableName.valueOf("emp"));

      // Adding column families to table descriptor
      tableDescriptor.addFamily(new HColumnDescriptor("personal"));
      tableDescriptor.addFamily(new HColumnDescriptor("professional"));

      // Execute the table through admin
      admin.createTable(tableDescriptor);
      System.out.println(" Table created ");
   }
}

Biên dịch và thực hiện chương trình trên như hình dưới đây.

$javac CreateTable.java
$java CreateTable

Sau đây là đầu ra:

Table created

Liệt kê một bảng bằng HBase Shell

list là lệnh được sử dụng để liệt kê tất cả các bảng trong HBase. Dưới đây là cú pháp của lệnh danh sách.

hbase(main):001:0 > list

Khi bạn gõ lệnh này và thực hiện trong dấu nhắc HBase, nó sẽ hiển thị danh sách tất cả các bảng trong HBase như hình dưới đây.

hbase(main):001:0> list
TABLE
emp

Ở đây bạn có thể quan sát một bảng tên là emp.

Bảng liệt kê sử dụng Java API

Làm theo các bước dưới đây để nhận danh sách các bảng từ HBase bằng cách sử dụng API java.

Bước 1

Bạn có một phương thức được gọi là listTables() trong lớp HBaseAdminđể lấy danh sách tất cả các bảng trong HBase. Phương thức này trả về một mảngHTableDescriptor các đối tượng.

//creating a configuration object
Configuration conf = HBaseConfiguration.create();

//Creating HBaseAdmin object
HBaseAdmin admin = new HBaseAdmin(conf);

//Getting all the list of tables using HBaseAdmin object
HTableDescriptor[] tableDescriptor = admin.listTables();

Bước 2

Bạn có thể nhận được chiều dài của HTableDescriptor[] mảng sử dụng biến độ dài của HTableDescriptorlớp học. Lấy tên của các bảng từ đối tượng này bằng cách sử dụnggetNameAsString()phương pháp. Chạy vòng lặp 'for' bằng cách sử dụng các bảng này và nhận danh sách các bảng trong HBase.

Dưới đây là chương trình liệt kê tất cả các bảng trong HBase bằng cách sử dụng Java API.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class ListTables {

   public static void main(String args[])throws MasterNotRunningException, IOException{

      // Instantiating a configuration class
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Getting all the list of tables using HBaseAdmin object
      HTableDescriptor[] tableDescriptor = admin.listTables();

      // printing all the table names.
      for (int i=0; i<tableDescriptor.length;i++ ){
         System.out.println(tableDescriptor[i].getNameAsString());
      }
   
   }
}

Biên dịch và thực hiện chương trình trên như hình dưới đây.

$javac ListTables.java
$java ListTables

Sau đây là đầu ra:

User
emp

Tắt bảng bằng HBase Shell

Để xóa bảng hoặc thay đổi cài đặt của nó, trước tiên bạn cần phải tắt bảng bằng lệnh tắt. Bạn có thể kích hoạt lại nó bằng lệnh enable.

Dưới đây là cú pháp để tắt một bảng:

disable ‘emp’

Thí dụ

Dưới đây là một ví dụ cho thấy cách tắt một bảng.

hbase(main):025:0> disable 'emp'
0 row(s) in 1.2760 seconds

xác minh

Sau khi vô hiệu hóa bảng, bạn vẫn có thể cảm nhận được sự tồn tại của nó thông qua listexistscác lệnh. Bạn không thể quét nó. Nó sẽ cung cấp cho bạn lỗi sau.

hbase(main):028:0> scan 'emp'
ROW         COLUMN + CELL
ERROR: emp is disabled.

bị vô hiệu hóa

Lệnh này được sử dụng để tìm xem một bảng có bị tắt hay không. Cú pháp của nó như sau.

hbase> is_disabled 'table name'

Ví dụ sau xác minh xem bảng có tên emp có bị vô hiệu hóa hay không. Nếu nó bị vô hiệu hóa, nó sẽ trả về true và nếu không, nó sẽ trả về false.

hbase(main):031:0> is_disabled 'emp'
true
0 row(s) in 0.0440 seconds

vô hiệu hóa tất cả

Lệnh này được sử dụng để tắt tất cả các bảng khớp với regex đã cho. Cú pháp chodisable_all lệnh được đưa ra bên dưới.

hbase> disable_all 'r.*'

Giả sử có 5 bảng trong HBase, đó là raja, rajani, rajendra, rajesh và raju. Đoạn mã sau sẽ vô hiệu hóa tất cả các bảng bắt đầu bằngraj.

hbase(main):002:07> disable_all 'raj.*'
raja
rajani
rajendra
rajesh
raju
Disable the above 5 tables (y/n)?
y
5 tables successfully disabled

Tắt bảng bằng Java API

Để xác minh xem một bảng có bị tắt hay không, isTableDisabled() được sử dụng và để tắt một bảng, disableTable()phương pháp được sử dụng. Các phương pháp này thuộc vềHBaseAdminlớp học. Làm theo các bước dưới đây để tắt bảng.

Bước 1

Khởi tạo HBaseAdmin lớp như hình bên dưới.

// Creating configuration object
Configuration conf = HBaseConfiguration.create();

// Creating HBaseAdmin object
HBaseAdmin admin = new HBaseAdmin(conf);

Bước 2

Xác minh xem bảng có bị tắt bằng cách sử dụng hay không isTableDisabled() như hình dưới đây.

Boolean b = admin.isTableDisabled("emp");

Bước 3

Nếu bảng không bị vô hiệu hóa, hãy tắt nó như hình dưới đây.

if(!b){
   admin.disableTable("emp");
   System.out.println("Table disabled");
}

Dưới đây là chương trình hoàn chỉnh để xác minh xem bảng có bị vô hiệu hóa hay không; nếu không, làm thế nào để vô hiệu hóa nó.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class DisableTable{

   public static void main(String args[]) throws MasterNotRunningException, IOException{

      // Instantiating configuration class
      Configuration conf = HBaseConfiguration.create();
 
      // Instantiating HBaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Verifying weather the table is disabled
      Boolean bool = admin.isTableDisabled("emp");
      System.out.println(bool);

      // Disabling the table using HBaseAdmin object
      if(!bool){
         admin.disableTable("emp");
         System.out.println("Table disabled");
      }
   }
}

Biên dịch và thực hiện chương trình trên như hình dưới đây.

$javac DisableTable.java
$java DsiableTable

Sau đây là đầu ra:

false
Table disabled

Kích hoạt Bảng bằng HBase Shell

Cú pháp để kích hoạt một bảng:

enable ‘emp’

Thí dụ

Dưới đây là một ví dụ để kích hoạt một bảng.

hbase(main):005:0> enable 'emp'
0 row(s) in 0.4580 seconds

xác minh

Sau khi bật bảng, hãy quét nó. Nếu bạn có thể nhìn thấy lược đồ, bảng của bạn đã được kích hoạt thành công.

hbase(main):006:0> scan 'emp'

   ROW                        COLUMN + CELL

1 column = personal data:city, timestamp = 1417516501, value = hyderabad

1 column = personal data:name, timestamp = 1417525058, value = ramu

1 column = professional data:designation, timestamp = 1417532601, value = manager

1 column = professional data:salary, timestamp = 1417524244109, value = 50000

2 column = personal data:city, timestamp = 1417524574905, value = chennai

2 column = personal data:name, timestamp = 1417524556125, value = ravi

2 column = professional data:designation, timestamp = 14175292204, value = sr:engg

2 column = professional data:salary, timestamp = 1417524604221, value = 30000 

3 column = personal data:city, timestamp = 1417524681780, value = delhi

3 column = personal data:name, timestamp = 1417524672067, value = rajesh

3 column = professional data:designation, timestamp = 14175246987, value = jr:engg

3 column = professional data:salary, timestamp = 1417524702514, value = 25000

3 row(s) in 0.0400 seconds

được kích hoạt

Lệnh này được sử dụng để tìm xem một bảng có được bật hay không. Cú pháp của nó như sau:

hbase> is_enabled 'table name'

Đoạn mã sau xác minh xem bảng có tên empđược kích hoạt. Nếu nó được kích hoạt, nó sẽ trả về true và nếu không, nó sẽ trả về false.

hbase(main):031:0> is_enabled 'emp'
true
0 row(s) in 0.0440 seconds

Bật bảng bằng Java API

Để xác minh xem một bảng có được bật hay không, isTableEnabled()phương pháp được sử dụng; và để kích hoạt một bảng,enableTable()phương pháp được sử dụng. Các phương pháp này thuộc vềHBaseAdminlớp học. Làm theo các bước dưới đây để kích hoạt một bảng.

Bước 1

Khởi tạo HBaseAdmin lớp như hình bên dưới.

// Creating configuration object
Configuration conf = HBaseConfiguration.create();

// Creating HBaseAdmin object
HBaseAdmin admin = new HBaseAdmin(conf);

Bước 2

Xác minh xem bảng được bật bằng cách sử dụng isTableEnabled() như hình dưới đây.

Boolean bool = admin.isTableEnabled("emp");

Bước 3

Nếu bảng không bị vô hiệu hóa, hãy tắt nó như hình dưới đây.

if(!bool){
   admin.enableTable("emp");
   System.out.println("Table enabled");
}

Dưới đây là chương trình hoàn chỉnh để xác minh xem bảng đã được kích hoạt hay chưa và nếu nó chưa được bật thì làm cách nào để kích hoạt nó.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class EnableTable{

   public static void main(String args[]) throws MasterNotRunningException, IOException{

      // Instantiating configuration class
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Verifying whether the table is disabled
      Boolean bool = admin.isTableEnabled("emp");
      System.out.println(bool);

      // Enabling the table using HBaseAdmin object
      if(!bool){
         admin.enableTable("emp");
         System.out.println("Table Enabled");
      }
   }
}

Biên dịch và thực hiện chương trình trên như hình dưới đây.

$javac EnableTable.java
$java EnableTable

Sau đây là đầu ra:

false
Table Enabled

diễn tả

Lệnh này trả về mô tả của bảng. Cú pháp của nó như sau:

hbase> describe 'table name'

Dưới đây là đầu ra của lệnh mô tả trên emp bàn.

hbase(main):006:0> describe 'emp'
   DESCRIPTION
      ENABLED
      
'emp', {NAME ⇒ 'READONLY', DATA_BLOCK_ENCODING ⇒ 'NONE', BLOOMFILTER
⇒ 'ROW', REPLICATION_SCOPE ⇒ '0', COMPRESSION ⇒ 'NONE', VERSIONS ⇒
'1', TTL true

⇒ 'FOREVER', MIN_VERSIONS ⇒ '0', KEEP_DELETED_CELLS ⇒ 'false',
BLOCKSIZE ⇒ '65536', IN_MEMORY ⇒ 'false', BLOCKCACHE ⇒ 'true'}, {NAME
⇒ 'personal

data', DATA_BLOCK_ENCODING ⇒ 'NONE', BLOOMFILTER ⇒ 'ROW',
REPLICATION_SCOPE ⇒ '0', VERSIONS ⇒ '5', COMPRESSION ⇒ 'NONE',
MIN_VERSIONS ⇒ '0', TTL

⇒ 'FOREVER', KEEP_DELETED_CELLS ⇒ 'false', BLOCKSIZE ⇒ '65536',
IN_MEMORY ⇒ 'false', BLOCKCACHE ⇒ 'true'}, {NAME ⇒ 'professional
data', DATA_BLO

CK_ENCODING ⇒ 'NONE', BLOOMFILTER ⇒ 'ROW', REPLICATION_SCOPE ⇒ '0',
VERSIONS ⇒ '1', COMPRESSION ⇒ 'NONE', MIN_VERSIONS ⇒ '0', TTL ⇒
'FOREVER', K

EEP_DELETED_CELLS ⇒ 'false', BLOCKSIZE ⇒ '65536', IN_MEMORY ⇒
'false', BLOCKCACHE ⇒ 'true'}, {NAME ⇒ 'table_att_unset',
DATA_BLOCK_ENCODING ⇒ 'NO 

NE', BLOOMFILTER ⇒ 'ROW', REPLICATION_SCOPE ⇒ '0', COMPRESSION ⇒
'NONE', VERSIONS ⇒ '1', TTL ⇒ 'FOREVER', MIN_VERSIONS ⇒ '0',
KEEP_DELETED_CELLS

⇒ 'false', BLOCKSIZE ⇒ '6

thay đổi

Alter là lệnh được sử dụng để thực hiện các thay đổi đối với bảng hiện có. Sử dụng lệnh này, bạn có thể thay đổi số ô tối đa của một họ cột, đặt và xóa các toán tử phạm vi bảng cũng như xóa một họ cột khỏi bảng.

Thay đổi số lượng ô tối đa của một họ cột

Dưới đây là cú pháp để thay đổi số lượng ô tối đa của một họ cột.

hbase> alter 't1', NAME ⇒ 'f1', VERSIONS ⇒ 5

Trong ví dụ sau, số ô tối đa được đặt thành 5.

hbase(main):003:0> alter 'emp', NAME ⇒ 'personal data', VERSIONS ⇒ 5
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.3050 seconds

Toán tử phạm vi bảng

Sử dụng thay đổi, bạn có thể đặt và loại bỏ các toán tử phạm vi bảng như MAX_FILESIZE, READONLY, MEMSTORE_FLUSHSIZE, DEFERRED_LOG_FLUSH, v.v.

Cài đặt Chỉ đọc

Dưới đây là cú pháp để tạo một bảng chỉ đọc.

hbase>alter 't1', READONLY(option)

Trong ví dụ sau, chúng tôi đã tạo emp bảng chỉ đọc.

hbase(main):006:0> alter 'emp', READONLY
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.2140 seconds

Xóa toán tử phạm vi bảng

Chúng tôi cũng có thể loại bỏ các toán tử phạm vi bảng. Dưới đây là cú pháp để xóa 'MAX_FILESIZE' khỏi bảng trống.

hbase> alter 't1', METHOD ⇒ 'table_att_unset', NAME ⇒ 'MAX_FILESIZE'

Xóa một họ cột

Sử dụng thay đổi, bạn cũng có thể xóa một họ cột. Dưới đây là cú pháp để xóa một họ cột bằng cách sử dụng thay đổi.

hbase> alter ‘ table name ’, ‘delete’ ⇒ ‘ column family ’

Dưới đây là một ví dụ để xóa một họ cột khỏi bảng 'emp'.

Giả sử có một bảng tên là nhân viên trong HBase. Nó chứa các dữ liệu sau:

hbase(main):006:0> scan 'employee'

   ROW                   COLUMN+CELL

row1 column = personal:city, timestamp = 1418193767, value = hyderabad

row1 column = personal:name, timestamp = 1418193806767, value = raju

row1 column = professional:designation, timestamp = 1418193767, value = manager

row1 column = professional:salary, timestamp = 1418193806767, value = 50000

1 row(s) in 0.0160 seconds

Bây giờ chúng ta hãy xóa họ cột có tên professional bằng cách sử dụng lệnh thay đổi.

hbase(main):007:0> alter 'employee','delete'⇒'professional'
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.2380 seconds

Bây giờ xác minh dữ liệu trong bảng sau khi thay đổi. Quan sát họ cột 'chuyên nghiệp' không còn nữa, vì chúng tôi đã xóa nó.

hbase(main):003:0> scan 'employee'
   ROW             COLUMN + CELL
row1 column = personal:city, timestamp = 14181936767, value = hyderabad

row1 column = personal:name, timestamp = 1418193806767, value = raju

1 row(s) in 0.0830 seconds

Thêm một họ cột bằng Java API

Bạn có thể thêm họ cột vào bảng bằng phương pháp addColumn() của HBAseAdminlớp học. Làm theo các bước dưới đây để thêm họ cột vào bảng.

Bước 1

Khởi tạo HBaseAdmin lớp học.

// Instantiating configuration object
Configuration conf = HBaseConfiguration.create();

// Instantiating HBaseAdmin class
HBaseAdmin admin = new HBaseAdmin(conf);

Bước 2

Các addColumn() phương thức yêu cầu một tên bảng và một đối tượng HColumnDescriptorlớp học. Do đó, khởi tạoHColumnDescriptorlớp học. Người xây dựngHColumnDescriptorlần lượt yêu cầu một họ cột sẽ được thêm vào. Ở đây chúng tôi đang thêm một họ cột có tên là “contactDetails” vào bảng “nhân viên” hiện có.

// Instantiating columnDescriptor object

HColumnDescriptor columnDescriptor = new
HColumnDescriptor("contactDetails");

Bước 3

Thêm họ cột bằng cách sử dụng addColumnphương pháp. Chuyển tên bảng vàHColumnDescriptor đối tượng lớp làm tham số cho phương thức này.

// Adding column family
admin.addColumn("employee", new HColumnDescriptor("columnDescriptor"));

Dưới đây là chương trình hoàn chỉnh để thêm họ cột vào bảng hiện có.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class AddColoumn{

   public static void main(String args[]) throws MasterNotRunningException, IOException{

      // Instantiating configuration class.
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class.
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Instantiating columnDescriptor class
      HColumnDescriptor columnDescriptor = new HColumnDescriptor("contactDetails");
      
      // Adding column family
      admin.addColumn("employee", columnDescriptor);
      System.out.println("coloumn added");
   }
}

Biên dịch và thực hiện chương trình trên như hình dưới đây.

$javac AddColumn.java
$java AddColumn

Quá trình biên dịch trên chỉ hoạt động nếu bạn đã đặt classpath trong “ .bashrc”. Nếu bạn chưa có, hãy làm theo quy trình dưới đây để biên dịch tệp .java của bạn.

//if "/home/home/hadoop/hbase " is your Hbase home folder then.

$javac -cp /home/hadoop/hbase/lib/*: Demo.java

Nếu mọi thứ suôn sẻ, nó sẽ tạo ra kết quả sau:

column added

Xóa một họ cột bằng Java API

Bạn có thể xóa một họ cột khỏi bảng bằng phương pháp deleteColumn() của HBAseAdminlớp học. Làm theo các bước dưới đây để thêm họ cột vào bảng.

Bước 1

Khởi tạo HBaseAdmin lớp học.

// Instantiating configuration object
Configuration conf = HBaseConfiguration.create();

// Instantiating HBaseAdmin class
HBaseAdmin admin = new HBaseAdmin(conf);

Bước 2

Thêm họ cột bằng cách sử dụng deleteColumn()phương pháp. Truyền tên bảng và họ cột làm tham số cho phương thức này.

// Deleting column family
admin.deleteColumn("employee", "contactDetails");

Dưới đây là chương trình hoàn chỉnh để xóa một họ cột khỏi một bảng hiện có.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class DeleteColoumn{

   public static void main(String args[]) throws MasterNotRunningException, IOException{

      // Instantiating configuration class.
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class.
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Deleting a column family
      admin.deleteColumn("employee","contactDetails");
      System.out.println("coloumn deleted"); 
   }
}

Biên dịch và thực hiện chương trình trên như hình dưới đây.

$javac DeleteColumn.java $java DeleteColumn

Sau đây là đầu ra:

column deleted

Sự tồn tại của Bảng sử dụng Vỏ HBase

Bạn có thể xác minh sự tồn tại của một bảng bằng cách sử dụng existschỉ huy. Ví dụ sau đây cho thấy cách sử dụng lệnh này.

hbase(main):024:0> exists 'emp'
Table emp does exist

0 row(s) in 0.0750 seconds

==================================================================

hbase(main):015:0> exists 'student'
Table student does not exist

0 row(s) in 0.0480 seconds

Xác minh sự tồn tại của bảng bằng Java API

Bạn có thể xác minh sự tồn tại của một bảng trong HBase bằng cách sử dụng tableExists() phương pháp của HBaseAdmin lớp học. Làm theo các bước dưới đây để xác minh sự tồn tại của một bảng trong HBase.

Bước 1

Instantiate the HBaseAdimn class

// Instantiating configuration object
Configuration conf = HBaseConfiguration.create();

// Instantiating HBaseAdmin class
HBaseAdmin admin = new HBaseAdmin(conf);

Bước 2

Xác minh sự tồn tại của bảng bằng cách sử dụng tableExists( ) phương pháp.

Dưới đây là chương trình java để kiểm tra sự tồn tại của một bảng trong HBase bằng cách sử dụng API java.

import java.io.IOException;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class TableExists{

   public static void main(String args[])throws IOException{

      // Instantiating configuration class
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Verifying the existance of the table
      boolean bool = admin.tableExists("emp");
      System.out.println( bool);
   }
}

Biên dịch và thực hiện chương trình trên như hình dưới đây.

$javac TableExists.java $java TableExists

Sau đây là đầu ra:

true

Thả một bảng bằng HBase Shell

Sử dụng droplệnh, bạn có thể xóa một bảng. Trước khi thả một bảng, bạn phải vô hiệu hóa nó.

hbase(main):018:0> disable 'emp'
0 row(s) in 1.4580 seconds

hbase(main):019:0> drop 'emp'
0 row(s) in 0.3060 seconds

Xác minh xem bảng có bị xóa hay không bằng cách sử dụng lệnh tồn tại.

hbase(main):020:07gt; exists 'emp'
Table emp does not exist
0 row(s) in 0.0730 seconds

drop_all

Lệnh này được sử dụng để thả các bảng khớp với “regex” được đưa ra trong lệnh. Cú pháp của nó như sau:

hbase> drop_all ‘t.*’

Note: Trước khi bỏ một bảng, bạn phải vô hiệu hóa nó.

Thí dụ

Giả sử có các bảng có tên raja, rajani, rajendra, rajesh và raju.

hbase(main):017:0> list
TABLE
raja
rajani
rajendra 
rajesh
raju
9 row(s) in 0.0270 seconds

Tất cả các bảng này bắt đầu bằng các chữ cái raj. Trước hết, chúng ta hãy tắt tất cả các bảng này bằng cách sử dụngdisable_all lệnh như hình dưới đây.

hbase(main):002:0> disable_all 'raj.*'
raja
rajani
rajendra
rajesh
raju
Disable the above 5 tables (y/n)?
y
5 tables successfully disabled

Bây giờ bạn có thể xóa tất cả chúng bằng cách sử dụng drop_all lệnh như dưới đây.

hbase(main):018:0> drop_all 'raj.*'
raja
rajani
rajendra
rajesh
raju
Drop the above 5 tables (y/n)?
y
5 tables successfully dropped

Xóa bảng bằng Java API

Bạn có thể xóa một bảng bằng cách sử dụng deleteTable() phương pháp trong HBaseAdminlớp học. Làm theo các bước dưới đây để xóa bảng bằng API java.

Bước 1

Khởi tạo lớp HBaseAdmin.

// creating a configuration object
Configuration conf = HBaseConfiguration.create();

// Creating HBaseAdmin object
HBaseAdmin admin = new HBaseAdmin(conf);

Bước 2

Tắt bảng bằng cách sử dụng disableTable() phương pháp của HBaseAdmin lớp học.

admin.disableTable("emp1");

Bước 3

Bây giờ xóa bảng bằng cách sử dụng deleteTable() phương pháp của HBaseAdmin lớp học.

admin.deleteTable("emp12");

Dưới đây là chương trình java hoàn chỉnh để xóa một bảng trong HBase.

import java.io.IOException;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class DeleteTable {

   public static void main(String[] args) throws IOException {

      // Instantiating configuration class
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(conf);

      // disabling table named emp
      admin.disableTable("emp12");

      // Deleting emp
      admin.deleteTable("emp12");
      System.out.println("Table deleted");
   }
}

Biên dịch và thực hiện chương trình trên như hình dưới đây.

$javac DeleteTable.java $java DeleteTable

Sau đây là đầu ra:

Table deleted

lối ra

Bạn thoát khỏi trình bao bằng cách gõ exit chỉ huy.

hbase(main):021:0> exit

Ngừng HBase

Để dừng HBase, hãy duyệt đến thư mục chính của HBase và nhập lệnh sau.

./bin/stop-hbase.sh

Ngừng HBase bằng Java API

Bạn có thể tắt HBase bằng cách sử dụng shutdown() phương pháp của HBaseAdminlớp học. Làm theo các bước dưới đây để tắt HBase:

Bước 1

Khởi tạo lớp HbaseAdmin.

// Instantiating configuration object
Configuration conf = HBaseConfiguration.create();

// Instantiating HBaseAdmin object
HBaseAdmin admin = new HBaseAdmin(conf);

Bước 2

Tắt HBase bằng cách sử dụng shutdown() phương pháp của HBaseAdmin lớp học.

admin.shutdown();

Dưới đây là chương trình để dừng HBase.

import java.io.IOException;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class ShutDownHbase{

   public static void main(String args[])throws IOException {

      // Instantiating configuration class
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Shutting down HBase
      System.out.println("Shutting down hbase");
      admin.shutdown();
   }
}

Biên dịch và thực hiện chương trình trên như hình dưới đây.

$javac ShutDownHbase.java $java ShutDownHbase

Sau đây là đầu ra:

Shutting down hbase

Chương này mô tả API ứng dụng khách java cho HBase được sử dụng để thực hiện CRUDcác thao tác trên bảng HBase. HBase được viết bằng Java và có Java Native API. Do đó, nó cung cấp quyền truy cập có lập trình vào Ngôn ngữ thao tác dữ liệu (DML).

Cấu hình lớp HBase

Thêm tệp cấu hình HBase vào Cấu hình. Lớp này thuộc vềorg.apache.hadoop.hbase gói hàng.

Phương pháp và mô tả

Không. Phương pháp và Mô tả
1

static org.apache.hadoop.conf.Configuration create()

Phương pháp này tạo một Cấu hình với tài nguyên HBase.

Lớp HTable

HTable là một lớp bên trong HBase đại diện cho một bảng HBase. Nó là một triển khai của bảng được sử dụng để giao tiếp với một bảng HBase. Lớp này thuộc vềorg.apache.hadoop.hbase.client lớp học.

Người xây dựng

Không. Trình tạo và mô tả
1

HTable()

2

HTable(TableName tableName, ClusterConnection connection, ExecutorService pool)

Sử dụng hàm tạo này, bạn có thể tạo một đối tượng để truy cập bảng HBase.

Phương pháp và mô tả

Không. Phương pháp và Mô tả
1

void close()

Giải phóng tất cả các tài nguyên của HTable.

2

void delete(Delete delete)

Xóa các ô / hàng được chỉ định.

3

boolean exists(Get get)

Sử dụng phương pháp này, bạn có thể kiểm tra sự tồn tại của các cột trong bảng, như được chỉ định bởi Get.

4

Result get(Get get)

Lấy các ô nhất định từ một hàng nhất định.

5

org.apache.hadoop.conf.Configuration getConfiguration()

Trả về đối tượng Cấu hình được sử dụng bởi phiên bản này.

6

TableName getName()

Trả về phiên bản tên bảng của bảng này.

7

HTableDescriptor getTableDescriptor()

Trả về bộ mô tả bảng cho bảng này.

số 8

byte[] getTableName()

Trả về tên của bảng này.

9

void put(Put put)

Sử dụng phương pháp này, bạn có thể chèn dữ liệu vào bảng.

Class Put

Lớp này được sử dụng để thực hiện các hoạt động Đặt cho một hàng. Nó thuộc vềorg.apache.hadoop.hbase.client gói hàng.

Người xây dựng

Không. Trình tạo và mô tả
1

Put(byte[] row)

Sử dụng hàm tạo này, bạn có thể tạo một hoạt động Đặt cho hàng được chỉ định.

2

Put(byte[] rowArray, int rowOffset, int rowLength)

Sử dụng hàm tạo này, bạn có thể tạo một bản sao của khóa hàng được truyền vào để giữ cục bộ.

3

Put(byte[] rowArray, int rowOffset, int rowLength, long ts)

Sử dụng hàm tạo này, bạn có thể tạo một bản sao của khóa hàng được truyền vào để giữ cục bộ.

4

Put(byte[] row, long ts)

Sử dụng hàm tạo này, chúng ta có thể tạo hoạt động Đặt cho hàng được chỉ định, sử dụng dấu thời gian nhất định.

Phương pháp

Không. Phương pháp và Mô tả
1

Put add(byte[] family, byte[] qualifier, byte[] value)

Thêm cột và giá trị được chỉ định vào hoạt động Đặt này.

2

Put add(byte[] family, byte[] qualifier, long ts, byte[] value)

Thêm cột và giá trị được chỉ định, với dấu thời gian được chỉ định làm phiên bản của nó cho hoạt động Đặt này.

3

Put add(byte[] family, ByteBuffer qualifier, long ts, ByteBuffer value)

Thêm cột và giá trị được chỉ định, với dấu thời gian được chỉ định làm phiên bản của nó cho hoạt động Đặt này.

4

Put add(byte[] family, ByteBuffer qualifier, long ts, ByteBuffer value)

Thêm cột và giá trị được chỉ định, với dấu thời gian được chỉ định làm phiên bản của nó cho hoạt động Đặt này.

Lớp nhận

Lớp này được sử dụng để thực hiện các hoạt động Nhận trên một hàng duy nhất. Lớp này thuộc vềorg.apache.hadoop.hbase.client gói hàng.

Constructor

Không. Hàm tạo và mô tả
1

Get(byte[] row)

Sử dụng hàm tạo này, bạn có thể tạo hoạt động Nhận cho hàng được chỉ định.

2 Get(Get get)

Phương pháp

Không. Phương pháp và Mô tả
1

Get addColumn(byte[] family, byte[] qualifier)

Lấy cột từ họ cụ thể với bộ định tính được chỉ định.

2

Get addFamily(byte[] family)

Lấy tất cả các cột từ họ được chỉ định.

Xóa lớp

Lớp này được sử dụng để thực hiện các thao tác Xóa trên một hàng. Để xóa toàn bộ hàng, hãy khởi tạo đối tượng Xóa với hàng cần xóa. Lớp này thuộc vềorg.apache.hadoop.hbase.client gói hàng.

Constructor

Không. Hàm tạo và mô tả
1

Delete(byte[] row)

Tạo thao tác Xóa cho hàng được chỉ định.

2

Delete(byte[] rowArray, int rowOffset, int rowLength)

Tạo thao tác Xóa cho hàng và dấu thời gian được chỉ định.

3

Delete(byte[] rowArray, int rowOffset, int rowLength, long ts)

Tạo thao tác Xóa cho hàng và dấu thời gian được chỉ định.

4

Delete(byte[] row, long timestamp)

Tạo thao tác Xóa cho hàng và dấu thời gian được chỉ định.

Phương pháp

Không. Phương pháp và Mô tả
1

Delete addColumn(byte[] family, byte[] qualifier)

Xóa phiên bản mới nhất của cột được chỉ định.

2

Delete addColumns(byte[] family, byte[] qualifier, long timestamp)

Xóa tất cả các phiên bản của cột được chỉ định có dấu thời gian nhỏ hơn hoặc bằng dấu thời gian được chỉ định.

3

Delete addFamily(byte[] family)

Xóa tất cả các phiên bản của tất cả các cột của họ được chỉ định.

4

Delete addFamily(byte[] family, long timestamp)

Xóa tất cả các cột của họ được chỉ định có dấu thời gian nhỏ hơn hoặc bằng dấu thời gian được chỉ định.

Kết quả lớp học

Lớp này được sử dụng để nhận một kết quả hàng đơn của truy vấn Nhận hoặc Quét.

Người xây dựng

Không. Người xây dựng
1

Result()

Sử dụng hàm tạo này, bạn có thể tạo Kết quả trống không có trọng tải KeyValue; trả về null nếu bạn gọi nguyên Cells ().

Phương pháp

Không. Phương pháp và Mô tả
1

byte[] getValue(byte[] family, byte[] qualifier)

Phương thức này được sử dụng để lấy phiên bản mới nhất của cột được chỉ định.

2

byte[] getRow()

Phương thức này được sử dụng để truy xuất khóa hàng tương ứng với hàng mà từ đó Kết quả này được tạo.

Chèn dữ liệu bằng HBase Shell

Chương này trình bày cách tạo dữ liệu trong bảng HBase. Để tạo dữ liệu trong bảng HBase, các lệnh và phương pháp sau được sử dụng:

  • put chỉ huy,

  • add() phương pháp của Put lớp học, và

  • put() phương pháp của HTable lớp học.

Ví dụ, chúng ta sẽ tạo bảng sau trong HBase.

Sử dụng put, bạn có thể chèn các hàng vào một bảng. Cú pháp của nó như sau:

put ’<table name>’,’row1’,’<colfamily:colname>’,’<value>’

Chèn hàng đầu tiên

Hãy để chúng tôi chèn các giá trị hàng đầu tiên vào bảng emp như hình dưới đây.

hbase(main):005:0> put 'emp','1','personal data:name','raju'
0 row(s) in 0.6600 seconds
hbase(main):006:0> put 'emp','1','personal data:city','hyderabad'
0 row(s) in 0.0410 seconds
hbase(main):007:0> put 'emp','1','professional
data:designation','manager'
0 row(s) in 0.0240 seconds
hbase(main):007:0> put 'emp','1','professional data:salary','50000'
0 row(s) in 0.0240 seconds

Chèn các hàng còn lại bằng lệnh put theo cách tương tự. Nếu bạn chèn toàn bộ bảng, bạn sẽ nhận được kết quả sau.

hbase(main):022:0> scan 'emp'

   ROW                        COLUMN+CELL
1 column=personal data:city, timestamp=1417524216501, value=hyderabad

1 column=personal data:name, timestamp=1417524185058, value=ramu

1 column=professional data:designation, timestamp=1417524232601,

 value=manager
 
1 column=professional data:salary, timestamp=1417524244109, value=50000

2 column=personal data:city, timestamp=1417524574905, value=chennai

2 column=personal data:name, timestamp=1417524556125, value=ravi

2 column=professional data:designation, timestamp=1417524592204,

 value=sr:engg
 
2 column=professional data:salary, timestamp=1417524604221, value=30000

3 column=personal data:city, timestamp=1417524681780, value=delhi

3 column=personal data:name, timestamp=1417524672067, value=rajesh

3 column=professional data:designation, timestamp=1417524693187,

value=jr:engg
3 column=professional data:salary, timestamp=1417524702514,

value=25000

Chèn dữ liệu bằng Java API

Bạn có thể chèn dữ liệu vào Hbase bằng cách sử dụng add() phương pháp của Putlớp học. Bạn có thể lưu nó bằng cách sử dụngput() phương pháp của HTablelớp học. Các lớp này thuộc vềorg.apache.hadoop.hbase.clientgói hàng. Dưới đây là các bước để tạo dữ liệu trong Bảng HBase.

Bước 1: Khởi tạo lớp cấu hình

Các Configurationlớp thêm các tệp cấu hình HBase vào đối tượng của nó. Bạn có thể tạo một đối tượng cấu hình bằng cách sử dụngcreate() phương pháp của HbaseConfiguration lớp như hình bên dưới.

Configuration conf = HbaseConfiguration.create();

Bước 2: Khởi tạo lớp HTable

Bạn có một lớp học được gọi là HTable, một triển khai của Bảng trong HBase. Lớp này được sử dụng để giao tiếp với một bảng HBase. Trong khi khởi tạo lớp này, nó chấp nhận đối tượng cấu hình và tên bảng làm tham số. Bạn có thể khởi tạo lớp HTable như hình dưới đây.

HTable hTable = new HTable(conf, tableName);

Bước 3: Khởi tạo PutClass

Để chèn dữ liệu vào bảng HBase, add()phương pháp và các biến thể của nó được sử dụng. Phương pháp này thuộc vềPut, do đó khởi tạo lớp đặt. Lớp này yêu cầu tên hàng mà bạn muốn chèn dữ liệu vào, ở định dạng chuỗi. Bạn có thể khởi tạoPut lớp như hình bên dưới.

Put p = new Put(Bytes.toBytes("row1"));

Bước 4: InsertData

Các add() phương pháp của Putlớp được sử dụng để chèn dữ liệu. Nó yêu cầu 3 mảng byte đại diện cho họ cột, định tính cột (tên cột) và giá trị được chèn tương ứng. Chèn dữ liệu vào bảng HBase bằng phương thức add () như hình dưới đây.

p.add(Bytes.toBytes("coloumn family "), Bytes.toBytes("column
name"),Bytes.toBytes("value"));

Bước 5: Lưu dữ liệu trong bảng

Sau khi chèn các hàng bắt buộc, hãy lưu các thay đổi bằng cách thêm phiên bản đặt vào put() phương thức của lớp HTable như hình dưới đây.

hTable.put(p);

Bước 6: Đóng phiên bản HTable

Sau khi tạo dữ liệu trong Bảng HBase, hãy đóng HTable ví dụ sử dụng close() như hình dưới đây.

hTable.close();

Dưới đây là chương trình hoàn chỉnh để tạo dữ liệu trong Bảng HBase.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;

public class InsertData{

   public static void main(String[] args) throws IOException {

      // Instantiating Configuration class
      Configuration config = HBaseConfiguration.create();

      // Instantiating HTable class
      HTable hTable = new HTable(config, "emp");

      // Instantiating Put class
      // accepts a row name.
      Put p = new Put(Bytes.toBytes("row1")); 

      // adding values using add() method
      // accepts column family name, qualifier/row name ,value
      p.add(Bytes.toBytes("personal"),
      Bytes.toBytes("name"),Bytes.toBytes("raju"));

      p.add(Bytes.toBytes("personal"),
      Bytes.toBytes("city"),Bytes.toBytes("hyderabad"));

      p.add(Bytes.toBytes("professional"),Bytes.toBytes("designation"),
      Bytes.toBytes("manager"));

      p.add(Bytes.toBytes("professional"),Bytes.toBytes("salary"),
      Bytes.toBytes("50000"));
      
      // Saving the put Instance to the HTable.
      hTable.put(p);
      System.out.println("data inserted");
      
      // closing HTable
      hTable.close();
   }
}

Biên dịch và thực hiện chương trình trên như hình dưới đây.

$javac InsertData.java $java InsertData

Sau đây là đầu ra:

data inserted

Cập nhật dữ liệu bằng HBase Shell

Bạn có thể cập nhật giá trị ô hiện có bằng cách sử dụng putchỉ huy. Để làm như vậy, chỉ cần làm theo cú pháp tương tự và đề cập đến giá trị mới của bạn như hình dưới đây.

put ‘table name’,’row ’,'Column family:column name',’new value’

Giá trị mới cho trước thay thế giá trị hiện có, cập nhật hàng.

Thí dụ

Giả sử có một bảng trong HBase được gọi là emp với dữ liệu sau.

hbase(main):003:0> scan 'emp'
 ROW              COLUMN + CELL
row1 column = personal:name, timestamp = 1418051555, value = raju
row1 column = personal:city, timestamp = 1418275907, value = Hyderabad
row1 column = professional:designation, timestamp = 14180555,value = manager
row1 column = professional:salary, timestamp = 1418035791555,value = 50000
1 row(s) in 0.0100 seconds

Lệnh sau sẽ cập nhật giá trị thành phố của nhân viên có tên 'Raju' thành Delhi.

hbase(main):002:0> put 'emp','row1','personal:city','Delhi'
0 row(s) in 0.0400 seconds

Bảng cập nhật trông như sau, nơi bạn có thể quan sát thành phố Raju đã được đổi thành 'Delhi'.

hbase(main):003:0> scan 'emp'
  ROW          COLUMN + CELL
row1 column = personal:name, timestamp = 1418035791555, value = raju
row1 column = personal:city, timestamp = 1418274645907, value = Delhi
row1 column = professional:designation, timestamp = 141857555,value = manager
row1 column = professional:salary, timestamp = 1418039555, value = 50000
1 row(s) in 0.0100 seconds

Cập nhật dữ liệu bằng Java API

Bạn có thể cập nhật dữ liệu trong một ô cụ thể bằng cách sử dụng put()phương pháp. Làm theo các bước dưới đây để cập nhật giá trị ô hiện có của bảng.

Bước 1: Khởi tạo lớp cấu hình

Configurationlớp thêm các tệp cấu hình HBase vào đối tượng của nó. Bạn có thể tạo một đối tượng cấu hình bằng cách sử dụngcreate() phương pháp của HbaseConfiguration lớp như hình bên dưới.

Configuration conf = HbaseConfiguration.create();

Bước 2: Khởi tạo lớp HTable

Bạn có một lớp học được gọi là HTable, một triển khai của Bảng trong HBase. Lớp này được sử dụng để giao tiếp với một bảng HBase. Trong khi khởi tạo lớp này, nó chấp nhận đối tượng cấu hình và tên bảng làm tham số. Bạn có thể khởi tạo lớp HTable như hình dưới đây.

HTable hTable = new HTable(conf, tableName);

Bước 3: Khởi tạo Put Class

Để chèn dữ liệu vào Bảng HBase, add()phương pháp và các biến thể của nó được sử dụng. Phương pháp này thuộc vềPut, do đó khởi tạo putlớp học. Lớp này yêu cầu tên hàng mà bạn muốn chèn dữ liệu vào, ở định dạng chuỗi. Bạn có thể khởi tạoPut lớp như hình bên dưới.

Put p = new Put(Bytes.toBytes("row1"));

Bước 4: Cập nhật một ô hiện có

Các add() phương pháp của Putlớp được sử dụng để chèn dữ liệu. Nó yêu cầu 3 mảng byte đại diện cho họ cột, định tính cột (tên cột) và giá trị được chèn tương ứng. Chèn dữ liệu vào bảng HBase bằng cách sử dụngadd() như hình dưới đây.

p.add(Bytes.toBytes("coloumn family "), Bytes.toBytes("column
name"),Bytes.toBytes("value"));
p.add(Bytes.toBytes("personal"),
Bytes.toBytes("city"),Bytes.toBytes("Delih"));

Bước 5: Lưu dữ liệu trong bảng

Sau khi chèn các hàng bắt buộc, hãy lưu các thay đổi bằng cách thêm phiên bản đặt vào put() phương thức của lớp HTable như hình dưới đây.

hTable.put(p);

Bước 6: Đóng phiên bản HTable

Sau khi tạo dữ liệu trong Bảng HBase, hãy đóng HTable ví dụ bằng cách sử dụng phương thức close () như hình dưới đây.

hTable.close();

Dưới đây là chương trình hoàn chỉnh để cập nhật dữ liệu trong một bảng cụ thể.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;

public class UpdateData{

   public static void main(String[] args) throws IOException {

      // Instantiating Configuration class
      Configuration config = HBaseConfiguration.create();

      // Instantiating HTable class
      HTable hTable = new HTable(config, "emp");

      // Instantiating Put class
      //accepts a row name
      Put p = new Put(Bytes.toBytes("row1"));

      // Updating a cell value
      p.add(Bytes.toBytes("personal"),
      Bytes.toBytes("city"),Bytes.toBytes("Delih"));

      // Saving the put Instance to the HTable.
      hTable.put(p);
      System.out.println("data Updated");

      // closing HTable
      hTable.close();
   }
}

Biên dịch và thực hiện chương trình trên như hình dưới đây.

$javac UpdateData.java $java UpdateData

Sau đây là đầu ra:

data Updated

Đọc dữ liệu bằng HBase Shell

Các get lệnh và get() phương pháp của HTablelớp được sử dụng để đọc dữ liệu từ một bảng trong HBase. Sử dụngget, bạn có thể nhận được một hàng dữ liệu tại một thời điểm. Cú pháp của nó như sau:

get ’<table name>’,’row1’

Thí dụ

Ví dụ sau đây cho thấy cách sử dụng lệnh get. Hãy để chúng tôi quét hàng đầu tiên củaemp bàn.

hbase(main):012:0> get 'emp', '1'

   COLUMN                     CELL
   
personal : city timestamp = 1417521848375, value = hyderabad

personal : name timestamp = 1417521785385, value = ramu

professional: designation timestamp = 1417521885277, value = manager

professional: salary timestamp = 1417521903862, value = 50000

4 row(s) in 0.0270 seconds

Đọc một cột cụ thể

Dưới đây là cú pháp để đọc một cột cụ thể bằng cách sử dụng get phương pháp.

hbase> get 'table name', ‘rowid’, {COLUMN ⇒ ‘column family:column name ’}

Thí dụ

Dưới đây là ví dụ để đọc một cột cụ thể trong bảng HBase.

hbase(main):015:0> get 'emp', 'row1', {COLUMN ⇒ 'personal:name'}
  COLUMN                CELL  
personal:name timestamp = 1418035791555, value = raju
1 row(s) in 0.0080 seconds

Đọc dữ liệu bằng Java API

Để đọc dữ liệu từ bảng HBase, hãy sử dụng get()phương thức của lớp HTable. Phương thức này yêu cầu một phiên bản củaGetlớp học. Làm theo các bước dưới đây để truy xuất dữ liệu từ bảng HBase.

Bước 1: Khởi tạo lớp cấu hình

Configurationlớp thêm các tệp cấu hình HBase vào đối tượng của nó. Bạn có thể tạo một đối tượng cấu hình bằng cách sử dụngcreate() phương pháp của HbaseConfiguration lớp như hình bên dưới.

Configuration conf = HbaseConfiguration.create();

Bước 2: Khởi tạo lớp HTable

Bạn có một lớp học được gọi là HTable, một triển khai của Bảng trong HBase. Lớp này được sử dụng để giao tiếp với một bảng HBase. Trong khi khởi tạo lớp này, nó chấp nhận đối tượng cấu hình và tên bảng làm tham số. Bạn có thể khởi tạo lớp HTable như hình dưới đây.

HTable hTable = new HTable(conf, tableName);

Bước 3: Khởi tạo lớp học

Bạn có thể truy xuất dữ liệu từ bảng HBase bằng cách sử dụng get() phương pháp của HTablelớp học. Phương pháp này trích xuất một ô từ một hàng nhất định. Nó yêu cầu mộtGetđối tượng lớp làm tham số. Tạo nó như hình dưới đây.

Get get = new Get(toBytes("row1"));

Bước 4: Đọc dữ liệu

Trong khi truy xuất dữ liệu, bạn có thể lấy một hàng theo id hoặc lấy một tập hợp các hàng theo một tập hợp id hàng, hoặc quét toàn bộ bảng hoặc một tập hợp con các hàng.

Bạn có thể truy xuất dữ liệu bảng HBase bằng cách sử dụng các biến thể phương thức thêm trong Get lớp học.

Để lấy một cột cụ thể từ một họ cột cụ thể, hãy sử dụng phương pháp sau.

get.addFamily(personal)

Để lấy tất cả các cột từ một họ cột cụ thể, hãy sử dụng phương pháp sau.

get.addColumn(personal, name)

Bước 5: Nhận kết quả

Nhận kết quả bằng cách vượt qua Get cá thể lớp cho phương thức get của HTablelớp học. Phương thức này trả vềResultđối tượng lớp, chứa kết quả được yêu cầu. Dưới đây là cách sử dụng củaget() phương pháp.

Result result = table.get(g);

Bước 6: Đọc Giá trị từ Phiên bản Kết quả

Các Result lớp học cung cấp getValue()để đọc các giá trị từ thể hiện của nó. Sử dụng nó như được hiển thị bên dưới để đọc các giá trị từResult ví dụ.

byte [] value = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("name"));
byte [] value1 = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("city"));

Dưới đây là chương trình hoàn chỉnh để đọc các giá trị từ bảng HBase.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;

public class RetriveData{

   public static void main(String[] args) throws IOException, Exception{
   
      // Instantiating Configuration class
      Configuration config = HBaseConfiguration.create();

      // Instantiating HTable class
      HTable table = new HTable(config, "emp");

      // Instantiating Get class
      Get g = new Get(Bytes.toBytes("row1"));

      // Reading the data
      Result result = table.get(g);

      // Reading values from Result class object
      byte [] value = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("name"));

      byte [] value1 = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("city"));

      // Printing the values
      String name = Bytes.toString(value);
      String city = Bytes.toString(value1);
      
      System.out.println("name: " + name + " city: " + city);
   }
}

Biên dịch và thực hiện chương trình trên như hình dưới đây.

$javac RetriveData.java $java RetriveData

Sau đây là đầu ra:

name: Raju city: Delhi

Xóa một ô cụ thể trong bảng

Sử dụng delete, bạn có thể xóa một ô cụ thể trong bảng. Cú pháp củadelete lệnh như sau:

delete ‘<table name>’, ‘<row>’, ‘<column name >’, ‘<time stamp>’

Thí dụ

Đây là một ví dụ để xóa một ô cụ thể. Ở đây chúng tôi đang xóa tiền lương.

hbase(main):006:0> delete 'emp', '1', 'personal data:city',
1417521848375
0 row(s) in 0.0060 seconds

Xóa tất cả các ô trong bảng

Sử dụng lệnh "deleteall", bạn có thể xóa tất cả các ô liên tiếp. Dưới đây là cú pháp của lệnh deleteall.

deleteall ‘<table name>’, ‘<row>’,

Thí dụ

Đây là một ví dụ về lệnh "deleteall", nơi chúng tôi đang xóa tất cả các ô của row1 của bảng emp.

hbase(main):007:0> deleteall 'emp','1'
0 row(s) in 0.0240 seconds

Xác minh bảng bằng cách sử dụng scanchỉ huy. Ảnh chụp nhanh của bảng sau khi xóa bảng được đưa ra dưới đây.

hbase(main):022:0> scan 'emp'

ROW                  COLUMN + CELL

2 column = personal data:city, timestamp = 1417524574905, value = chennai 

2 column = personal data:name, timestamp = 1417524556125, value = ravi

2 column = professional data:designation, timestamp = 1417524204, value = sr:engg

2 column = professional data:salary, timestamp = 1417524604221, value = 30000

3 column = personal data:city, timestamp = 1417524681780, value = delhi

3 column = personal data:name, timestamp = 1417524672067, value = rajesh
 
3 column = professional data:designation, timestamp = 1417523187, value = jr:engg

3 column = professional data:salary, timestamp = 1417524702514, value = 25000

Xóa dữ liệu bằng Java API

Bạn có thể xóa dữ liệu khỏi bảng HBase bằng cách sử dụng delete() phương pháp của HTablelớp học. Làm theo các bước dưới đây để xóa dữ liệu khỏi bảng.

Bước 1: Khởi tạo lớp cấu hình

Configurationlớp thêm các tệp cấu hình HBase vào đối tượng của nó. Bạn có thể tạo một đối tượng cấu hình bằng cách sử dụngcreate() phương pháp của HbaseConfiguration lớp như hình bên dưới.

Configuration conf = HbaseConfiguration.create();

Bước 2: Khởi tạo lớp HTable

Bạn có một lớp học được gọi là HTable, một triển khai của Bảng trong HBase. Lớp này được sử dụng để giao tiếp với một bảng HBase. Trong khi khởi tạo lớp này, nó chấp nhận đối tượng cấu hình và tên bảng làm tham số. Bạn có thể khởi tạo lớp HTable như hình dưới đây.

HTable hTable = new HTable(conf, tableName);

Bước 3: Khởi tạo Xóa lớp

Khởi tạo Deletelớp bằng cách chuyển rowid của hàng sẽ bị xóa, ở định dạng mảng byte. Bạn cũng có thể chuyển dấu thời gian và Rowlock cho hàm tạo này.

Delete delete = new Delete(toBytes("row1"));

Bước 4: Chọn dữ liệu sẽ bị xóa

Bạn có thể xóa dữ liệu bằng các phương pháp xóa của Deletelớp học. Lớp này có nhiều phương thức xóa khác nhau. Chọn cột hoặc họ cột sẽ bị xóa bằng các phương pháp đó. Hãy xem các ví dụ sau đây cho thấy việc sử dụng các phương thức lớp Xóa.

delete.deleteColumn(Bytes.toBytes("personal"), Bytes.toBytes("name"));
delete.deleteFamily(Bytes.toBytes("professional"));

Bước 5: Xóa dữ liệu

Xóa dữ liệu đã chọn bằng cách chuyển delete ví dụ cho delete() phương pháp của HTable lớp như hình bên dưới.

table.delete(delete);

Bước 6: Đóng HTableInstance

Sau khi xóa dữ liệu, hãy đóng HTable Phiên bản.

table.close();

Dưới đây là chương trình hoàn chỉnh để xóa dữ liệu khỏi bảng HBase.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.util.Bytes;

public class DeleteData {

   public static void main(String[] args) throws IOException {

      // Instantiating Configuration class
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HTable class
      HTable table = new HTable(conf, "employee");

      // Instantiating Delete class
      Delete delete = new Delete(Bytes.toBytes("row1"));
      delete.deleteColumn(Bytes.toBytes("personal"), Bytes.toBytes("name"));
      delete.deleteFamily(Bytes.toBytes("professional"));

      // deleting the data
      table.delete(delete);

      // closing the HTable object
      table.close();
      System.out.println("data deleted.....");
   }
}

Biên dịch và thực hiện chương trình trên như hình dưới đây.

$javac Deletedata.java $java DeleteData

Sau đây là đầu ra:

data deleted

Quét bằng HBase Shell

Các scanđược sử dụng để xem dữ liệu trong HTable. Sử dụng lệnh quét, bạn có thể lấy dữ liệu bảng. Cú pháp của nó như sau:

scan ‘<table name>’

Thí dụ

Ví dụ sau đây cho thấy cách đọc dữ liệu từ một bảng bằng lệnh quét. Ở đây chúng tôi đang đọcemp bàn.

hbase(main):010:0> scan 'emp'

ROW                           COLUMN + CELL

1 column = personal data:city, timestamp = 1417521848375, value = hyderabad
 
1 column = personal data:name, timestamp = 1417521785385, value = ramu

1 column = professional data:designation, timestamp = 1417585277,value = manager

1 column = professional data:salary, timestamp = 1417521903862, value = 50000

1 row(s) in 0.0370 seconds

Quét bằng Java API

Chương trình hoàn chỉnh để quét toàn bộ dữ liệu bảng bằng API java như sau.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.util.Bytes;

import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;


public class ScanTable{

   public static void main(String args[]) throws IOException{

      // Instantiating Configuration class
      Configuration config = HBaseConfiguration.create();

      // Instantiating HTable class
      HTable table = new HTable(config, "emp");

      // Instantiating the Scan class
      Scan scan = new Scan();

      // Scanning the required columns
      scan.addColumn(Bytes.toBytes("personal"), Bytes.toBytes("name"));
      scan.addColumn(Bytes.toBytes("personal"), Bytes.toBytes("city"));

      // Getting the scan result
      ResultScanner scanner = table.getScanner(scan);

      // Reading values from scan result
      for (Result result = scanner.next(); result != null; result = Scanner.next())

      System.out.println("Found row : " + result);
      //closing the scanner
      scanner.close();
   }
}

Biên dịch và thực hiện chương trình trên như hình dưới đây.

$javac ScanTable.java $java ScanTable

Sau đây là đầu ra:

Found row :
keyvalues={row1/personal:city/1418275612888/Put/vlen=5/mvcc=0,
row1/personal:name/1418035791555/Put/vlen=4/mvcc=0}

đếm

Bạn có thể đếm số hàng của bảng bằng cách sử dụng countchỉ huy. Cú pháp của nó như sau:

count ‘<table name>’

Sau khi xóa hàng đầu tiên, bảng trống sẽ có hai hàng. Xác minh nó như hình dưới đây.

hbase(main):023:0> count 'emp'
2 row(s) in 0.090 seconds
⇒ 2

cắt bớt

Lệnh này vô hiệu hóa giọt và tạo lại một bảng. Cú pháp củatruncate là như sau:

hbase> truncate 'table name'

Thí dụ

Dưới đây là ví dụ về lệnh truncate. Ở đây chúng tôi đã cắt bớtemp bàn.

hbase(main):011:0> truncate 'emp'
Truncating 'one' table (it may take a while):
   - Disabling table...
   - Truncating table...
   0 row(s) in 1.5950 seconds

Sau khi cắt bớt bảng, hãy sử dụng lệnh quét để xác minh. Bạn sẽ nhận được một bảng không có hàng.

hbase(main):017:0> scan ‘emp’
ROW                  COLUMN + CELL
0 row(s) in 0.3110 seconds

Chúng tôi có thể cấp và thu hồi quyền cho người dùng trong HBase. Có ba lệnh cho mục đích bảo mật: cấp, thu hồi và user_permission.

ban cho

Các grantlệnh cấp các quyền cụ thể như đọc, ghi, thực thi và quản trị trên bảng cho một người dùng nhất định. Cú pháp của lệnh cấp như sau:

hbase> grant <user> <permissions> [<table> [<column family> [&ltcolumn; qualifier>]]

Chúng tôi có thể cấp không hoặc nhiều đặc quyền cho người dùng từ tập hợp RWXCA, trong đó

  • R - đại diện cho đặc quyền đọc.
  • W - đại diện cho đặc quyền ghi.
  • X - đại diện cho đặc quyền thực thi.
  • C - đại diện cho tạo đặc quyền.
  • A - đại diện cho đặc quyền của quản trị viên.

Dưới đây là một ví dụ cấp tất cả các đặc quyền cho người dùng có tên là 'Tutorialspoint'.

hbase(main):018:0> grant 'Tutorialspoint', 'RWXCA'

thu hồi

Các revokelệnh được sử dụng để thu hồi quyền truy cập bảng của người dùng. Cú pháp của nó như sau:

hbase> revoke <user>

Đoạn mã sau thu hồi tất cả các quyền từ người dùng có tên 'Điểm hướng dẫn'.

hbase(main):006:0> revoke 'Tutorialspoint'

user_permission

Lệnh này được sử dụng để liệt kê tất cả các quyền cho một bảng cụ thể. Cú pháp củauser_permission là như sau:

hbase>user_permission ‘tablename’

Đoạn mã sau liệt kê tất cả các quyền của người dùng của bảng 'emp'.

hbase(main):013:0> user_permission 'emp'