HBase를 통한 HDInsight 터치

9891 단어 HDInsightAzure
이번 프로젝트에서 사용한 것은 전혀 건드리지 않은 것과 같아서 HDInsight의 HBase 버전을 만져보았다.Linux에서 일하는 것 같아요."
나는 나 자신을 바꾸어 이것을 실행하려고 한다튜토리얼.

설치


아까 튜토리얼 에서 ARM 템플릿을 직접 배포할 수 있는 링크가 있기 때문에 클릭하십시오.다음은 현지에 맞게 설치해 보세요.

말해봐. 아주 간단해.참고로 HDInsight의 집단은 비용이 많이 들기 때문에 데이터는 저장 계정에 남겨두고 HDInsight만 삭제할 수 있습니다.

예의 바른 계기판까지 다 만들었다.

얼마나 세심하던지.

HBase


HBase는 Google의 Big Table에서 데이터 모델로 대량의 구조 데이터에 고속으로 접근할 수 있을 것 같다는 아이디어를 얻었다.
HBase Tutorial
Introduction to HBase Schema Design

사용 방법


얼른 써봐.

HBase Shell

hbase shell
에서 기술한 장면은 다음과 같은 절차를 이용하여 명세표를 작성하여 개념 디자인에서 체량의 부피를 분석하도록 한다.

HBase 테이블 만들기


Employee 시계를 만들어 보세요.
create 'Employee', 'Personal', 'Work'
Personal, Work는 Column Family라고 불리는 것으로 열을 나누는 데 사용할 수 있습니다.
그나저나 시계를 삭제하고 싶은 상황에서
disable 'Person'
drop 'Person'
이것은 방금 HBase Tutorial에서 통속적으로 쉽게 썼다.
어떤 책상이 있습니까? list
hbase(main):013:0> list
TABLE
Contacts
Contacts1
Employee
3 row(s) in 0.0100 seconds
표의 구조는 아까의 Column Family에 이르기 때문에 실제 데이터를 넣을 때 정의됩니다.
put 'Employee', '1', 'Personal:Name', 'Tsuyoshi'
put 'Employee', '1', 'Personal:Age', '46'
put 'Employee', '1', 'Work:Title', 'SDE'
put 'Employee', '1', 'Work:Country', 'Japan'
결과 scan 명령
hbase(main):019:0> get 'Employee', '1'
COLUMN                       CELL
 Personal:Age                timestamp=1501023224880, value=46
 Personal:Name               timestamp=1501023224668, value=Tsuyoshi
 Work:Country                timestamp=1501023225871, value=Japan
 Work:Title                  timestamp=1501023224936, value=SDE
4 row(s) in 0.1640 seconds
HBase의 셸에서 벗어나고 싶을 때exit.

데이터 가져오기


탭 문자로 구분된 데이터를 가져오려고 시도합니다.
2   Volker Will 50  SDE Manager Germany
3   Damien Caro 42  Manager France
4   David Teser 35  SDE United States
Azure의 스토리지 계정에서 다음 명령을 실행합니다.참고로 다음 예는 hdclustersample라는 저장 계정에서 container라는 용기를 만들고 그 아래에서 employees.tsv라는 파일을 만드는 예입니다.파일 형식은 hfilie입니다. 잠시 저장합니다.
hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns="HBASE_ROW_KEY,Personal:Name,Personal:Age,Work:Title,Work:Country" -Dimporttsv.bulk.output="/example/data/employeesFileOutput7" Employee wasbs://[email protected]/employees.tsv

그런 다음 HBase를 가져옵니다.이것은 대량의 데이터에 유리할 것 같다.(HBase를 직접 입력하는 방법도 있습니다.)
hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /example/data/employeesFileOutput7 Employee

이 조작은 나를 매혹시켰다.무슨 의미가 있는지, hbase 명령을 직접 두드리면 도움을 받을 수 있기 때문에 처음에 나는employees였다.서버에 있는 일반 파일 시스템에 tsv 파일을 지정합니다 file:///home/azureuser/employees.tsv.그래서 FileNotFound 오류가 발생했습니다. 왜 그런지 생각하고 있습니다.
하지만 생각해보면 당연하다.Hadoop 클러스터이기 때문에 각 클러스터의 VM에 해당하는 파일 경로에 파일이 있으면 좋겠지만 그렇게 하는 것은 매우 번거롭다.따라서 집단 공유에서 접근할 수 있는 곳에만 두어야 하기 때문에 저장 계정이 가장 쉽다.
hbase(main):002:0> scan 'Employee'
ROW                          COLUMN+CELL
 1                           column=Personal:Age, timestamp=1501023224880, value=46
 1                           column=Personal:Name, timestamp=1501023224668, value=Tsuyoshi
 1                           column=Work:Country, timestamp=1501023225871, value=Japan
 1                           column=Work:Title, timestamp=1501023224936, value=SDE
 2                           column=Personal:Age, timestamp=1501030594528, value=50
 2                           column=Personal:Name, timestamp=1501030594528, value=Volker Will
 2                           column=Work:Country, timestamp=1501030594528, value=Germany
 2                           column=Work:Title, timestamp=1501030594528, value=SDE Manager
 3                           column=Personal:Age, timestamp=1501030594528, value=42
 3                           column=Personal:Name, timestamp=1501030594528, value=Damien Caro
 3                           column=Work:Country, timestamp=1501030594528, value=France
 3                           column=Work:Title, timestamp=1501030594528, value=Manager
 4                           column=Personal:Age, timestamp=1501030594528, value=35
 4                           column=Personal:Name, timestamp=1501030594528, value=David Teser
 4                           column=Work:Country, timestamp=1501030594528, value=United States
 4                           column=Work:Title, timestamp=1501030594528, value=SDE
4 row(s) in 0.9880 seconds

숨기기 사용


그럼 Hive부터 HBase 테이블을 사용해 보세요.Beeline이라는 도구로 Hive를 사용해 보세요.
beeline -u 'jdbc:hive2://localhost:10001/;transportMode=http' -n admin
다음은 하이브의 표를 작성해 보세요.실제 상황은 HBase의 표를 참조하십시오.SQL에 가까운 구문으로 액세스할 수 있습니다.
CREATE EXTERNAL TABLE hbaseemployee(rowkey STRING, name STRING, age STRING, title STRING, country STRING)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ('hbase.columns.mapping' = ':key,Personal:Name,Personal:Age,Work:Title,Work:Country')
TBLPROPERTIES ('hbase.table.name' = 'Employee');
검색해봐.집단 사용을 잊어버렸네.
 select * from hbaseemployee;
+-----------------------+---------------------+--------------------+----------------------+------------------------+--+
| hbaseemployee.rowkey  | hbaseemployee.name  | hbaseemployee.age  | hbaseemployee.title  | hbaseemployee.country  |
+-----------------------+---------------------+--------------------+----------------------+------------------------+--+
| 1                     | Tsuyoshi            | 46                 | SDE                  | Japan                  |
| 2                     | Volker Will         | 50                 | SDE Manager          | Germany                |
| 3                     | Damien Caro         | 42                 | Manager              | France                 |
| 4                     | David Teser         | 35                 | SDE                  | United States          |
+-----------------------+---------------------+--------------------+----------------------+------------------------+--+
벨린을 통과한 것은 !exit.
!exit

REST API를 사용하여 클러스터 작업


List


REST API를 통해 HBase 테이블을 조작할 수도 있습니다.가령 hdcluster 은 HDInsight의 클러스터 이름이고 azureuser 는 클러스터를 생성할 때 사용자 이름이며 SomePassW@rd 은 암호입니다.
$ curl -u azureuser:SomePassW@rd -G https://hdcluster.azurehdinsight.net/hbaserest/
Contacts
Contacts1
Employee

Create table


시계의 일람표를 얻었다.마찬가지로 제작Employee2의 표.참고로 Column Family로서 Personal, Work를 지정했습니다.
curl -u azureuser:SomePassW@rd \
-X PUT "https://hdcluster.azurehdinsight.net/hbaserest/Employee2/schema" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{\"@name\":\"Employee2\",\"ColumnSchema\":[{\"name\":\"Personal\"},{\"name\":\"Work\"}]}" \
-v

Put data


다음은 데이터를 기입하세요.겸사겸사 말씀드리지만 도중에 나타난 것은 다음과 같은 상황입니다.데이터는 Base64로 작성해야 합니다.Introduction to HBase Schema Design 중 하나는 왜 이런 힌트를 줄 수 있는지.RowID 길이가 변경되면 성능 문제가 식별되지 않으므로 키에 산열을 사용하지만 여기에서는 Base64 인코딩이므로 이와 무관합니다.
Base64 는 Base64 Encode Decode 로 변환됩니다.
curl -u azureuser:SomePassW@rd \
-X PUT "https://hdcluster.azurehdinsight.net/hbaserest/Employee2/false-row-key" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{\"Row\":[{\"key\":\"MTA=\",\"Cell\": [{\"column\":\"UGVyc29uYWw6TmFtZQ==\", \"$\":\"VHN1eW9zaGkgVXNoaW8=\"}]}]}" \
-v

Select data


얻는 것도 간단해!
curl -u azureuser:SomePassW@rd \
-X GET "https://hdcluster.azurehdinsight.net/hbaserest/Employee2/10" \
-H "Accept: application/json" \
-v

* Connection #0 to host hdcluster.azurehdinsight.net left intact
{"Row":[{"key":"MTA=","Cell":[{"column":"UGVyc29uYWw6TmFtZQ==","timestamp":1501032073321,"$":"VHN1eW9zaGkgVXNoaW8="}]}]}
HDInsight는 그렇게 많은 것을 알 필요가 없기 때문에 내일부터 다시 평범한 하크로 돌아간다.

좋은 웹페이지 즐겨찾기