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 PATH và JAVA_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 Put và Get 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 list và existscá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> [<column; 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'