国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

HBase2.2.2安裝和編程實踐

這篇具有很好參考價值的文章主要介紹了HBase2.2.2安裝和編程實踐。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

如果你正在安裝,請用hadoop用戶

HBase介紹

HBase是一個分布式的、面向列的開源數(shù)據(jù)庫,源于Google的一篇論文《BigTable:一個結(jié)構(gòu)化數(shù)據(jù)的分布式存儲系統(tǒng)》。HBase以表的形式存儲數(shù)據(jù),表有行和列組成,列劃分為若干個列族/列簇(column family)。欲了解HBase的官方資訊,請訪問(http://hbase.apache.org/)。
HBase的運行有三種模式:單機模式、偽分布式模式、分布式模式。
單機模式:在一臺計算機上安裝和使用HBase,不涉及數(shù)據(jù)的分布式存儲;偽分布式模式:在一臺計算機上模擬一個小的集群;分布式模式:使用多臺計算機實現(xiàn)物理意義上的分布式存儲。

前提

確保已安裝Hadoop

1. HBase2.2.2安裝

將hbase的安裝包下載到虛擬機內(nèi)

1.1 解壓安裝包hbase-2.2.2-bin.tar.gz至路徑 /usr/local

cd ~
sudo tar -zxf ~/下載/hbase-2.2.2-bin.tar.gz -C /usr/local

安裝包路徑記得更改

1.2 將解壓的文件名hbase-2.2.2改為hbase,以方便使用

cd /usr/local
sudo mv ./hbase-2.2.2 ./hbase

把hbase目錄權(quán)限賦予給hadoop用戶

cd /usr/local
sudo chown -R hadoop ./hbase

1.3 配置環(huán)境變量
將hbase下的bin目錄添加到path中

vim ~/.bashrc
# 如果沒有引入過PATH請在~/.bashrc文件尾行添加如下內(nèi)容:
export PATH=$PATH:/usr/local/hbase/bin

HBase2.2.2安裝和編程實踐
編輯完成后,再執(zhí)行source命令使上述配置在當前終端立即生效

source ~/.bashrc

1.4 添加HBase權(quán)限

cd /usr/local
sudo chown -R hadoop ./hbase

HBase2.2.2安裝和編程實踐

1.5 查看HBase版本,確定hbase安裝成功

/usr/local/hbase/bin/hbase version

HBase2.2.2安裝和編程實踐

Error: JAVA_HOME is not set
Please download the latest Sun JDK from the Sun Java web site http://www.oracle.com/technetwork/java/javase/downloads
HBase requires Java 1.8 or later.

開始盤查漏洞!??!
HBase2.2.2安裝和編程實踐
之前在hadoop用戶中安裝,現(xiàn)在登錄的是usr用戶,在配置一遍。試試。
以下內(nèi)容源于安裝Hadoop教程:

在Linux命令行界面中,執(zhí)行如下Shell命令(注意:當前登錄用戶名是hadoop):

cd /usr/lib
sudo mkdir jvm 
cd ~
cd Downloads  
sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm 
cd /usr/lib/jvm
ls
cd ~
vim ~/.bashrc

上面命令使用vim編輯器(查看vim編輯器使用方法)打開了hadoop這個用戶的環(huán)境變量配置文件,請在這個文件的開頭位置,添加如下幾行內(nèi)容:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

保存.bashrc文件并退出vim編輯器。然后,繼續(xù)執(zhí)行如下命令讓.bashrc文件的配置立即生效:

source ~/.bashrc
java -version

裝java之后,再次查詢hbase版本

HBase2.2.2安裝和編程實踐

可知:要預(yù)先安裝

  • jdk
  • Hadoop( 單機模式不需要,偽分布式模式和分布式模式需要)
  • SSH

2. HBase配置

2.1單機模式配置
  1. 配置/usr/local/hbase/conf/hbase-env.sh 。配置JAVA環(huán)境變量,并添加配置HBASE_MANAGES_ZK為true,用vi命令打開并編輯hbase-env.sh
vim /usr/local/hbase/conf/hbase-env.sh

HBase2.2.2安裝和編程實踐
發(fā)現(xiàn)文件只讀,不可更改
解決方法,在命令前添加sudo

添加完成后保存退出即可。

  1. 配置/usr/local/hbase/conf/hbase-site.xml
    打開并編輯hbase-site.xml
vim /usr/local/hbase/conf/hbase-site.xml

在啟動HBase前需要設(shè)置屬性hbase.rootdir,用于指定HBase數(shù)據(jù)的存儲位置,若不設(shè)置的話,hbase.rootdir默認為/tmp/hbase-${user.name},這意味著每次重啟系統(tǒng)都會丟失數(shù)據(jù)。此處設(shè)置為HBase安裝目錄下的hbase-tmp文件夾即(/usr/local/hbase/hbase-tmp),添加配置如下:

<configuration>
        <property>
                <name>hbase.rootdir</name>
                <value>file:///usr/local/hbase/hbase-tmp</value>
        </property>
</configuration>
  1. 接下來測試運行。首先切換目錄至HBase安裝目錄/usr/local/hbase;再啟動HBase。
cd /usr/local/hbase
sudo bin/start-hbase.sh
bin/hbase shell

HBase2.2.2安裝和編程實踐
成功啟動HBase
HBase2.2.2安裝和編程實踐
停止HBase運行,命令如下:

bin/stop-hbase.sh

HBase2.2.2安裝和編程實踐

2.2 偽分布式模式配置

1.配置/usr/local/hbase/conf/hbase-env.sh

vim /usr/local/hbase/conf/hbase-env.sh

配置JAVA_HOME,HBASE_CLASSPATH,HBASE_MANAGES_ZK.
HBASE_CLASSPATH設(shè)置為本機HBase安裝目錄下的conf目錄

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export HBASE_CLASSPATH=/usr/local/hbase/conf 
export HBASE_MANAGES_ZK=true

由于之前已經(jīng)配置java和zookeeper,所以找到classpath添加路徑即可。

2.配置/usr/local/hbase/conf/hbase-site.xml,用命令vi打開并編輯hbase-site.xml

vim /usr/local/hbase/conf/hbase-site.xml

修改hbase.rootdir,指定HBase數(shù)據(jù)在HDFS上的存儲路徑;將屬性hbase.cluter.distributed設(shè)置為true。假設(shè)當前Hadoop集群運行在偽分布式模式下,在本機上運行,且NameNode運行在9000端口。

<configuration>
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://localhost:9000/hbase</value>
        </property>
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
        <property>
        <name>hbase.unsafe.stream.capability.enforce</name>
        <value>false</value>
    </property>
</configuration>

注意:修改環(huán)境配置文件可能打開是只讀文件,需要加上sudo

  1. 接下來測試運行HBase。
    第一步:首先登陸ssh,之前設(shè)置了無密碼登陸,因此這里不需要密碼;再切換目錄至/usr/local/hadoop ;再啟動hadoop,如果已經(jīng)啟動hadoop請?zhí)^此步驟。
ssh localhost
cd /usr/local/hadoop
./sbin/start-dfs.sh

ssh登錄開始報錯。。。HBase2.2.2安裝和編程實踐
HBase2.2.2安裝和編程實踐
不知啟動是否成功
jps試試。
HBase2.2.2安裝和編程實踐
很明顯失敗了,節(jié)點完全沒啟動。

報錯:localhost: usrp@localhost: Permission denied (publickey,password).

回到登錄ssh那一步,可能是免密登錄的問題
無法啟動hadoop,得用hadoop用戶運行,重啟進入hadoop用戶

在hadoop上快速配置一下hbase
HBase2.2.2安裝和編程實踐
運行一下單機模式
HBase2.2.2安裝和編程實踐
運行一下偽分布式,運行成功?。?!
HBase2.2.2安裝和編程實踐

所以,第一次運行失敗問題并不出于localhost,而是hadoop啟動的root不是對應(yīng)用戶。

第二步:切換目錄至/usr/local/hbase;再啟動HBase.HBase2.2.2安裝和編程實踐
進入shell界面,然后退出,停止HBase運行

bin/hbase shell
exit
bin/stop-hbase.sh

HBase2.2.2安裝和編程實踐

三、 編程實踐

1. 利用Shell命令

1.1 HBase中創(chuàng)建表

HBase中用create命令創(chuàng)建表
(啟動hbase,進入shell先)

  create 'student','Sname','Ssex','Sage','Sdept','course'

HBase2.2.2安裝和編程實踐

describe 'student'

HBase2.2.2安裝和編程實踐

1.2 HBase數(shù)據(jù)庫基本操作

1.2.1 添加數(shù)據(jù)
put 鍵,值
HBase2.2.2安裝和編程實踐
1.2.2 查找數(shù)據(jù)
get 表名,行名
scan 表名

1.2.3 刪除數(shù)據(jù)
delete 表名,行,列 //刪除具體行列中的數(shù)據(jù)
deleteall 表名,行 //刪除整個行的數(shù)據(jù)
HBase2.2.2安裝和編程實踐

*刪除數(shù)學(xué)列的內(nèi)容

1.2.4 刪除表

disable 'student'  
drop 'student'

HBase2.2.2安裝和編程實踐

1.3 查詢表歷史數(shù)據(jù)

1、在創(chuàng)建表的時候,指定保存的版本數(shù)(假設(shè)指定為5)

2、插入數(shù)據(jù)然后更新數(shù)據(jù),使其產(chǎn)生歷史版本數(shù)據(jù),注意:這里插入數(shù)據(jù)和更新數(shù)據(jù)都是用put命令

3、查詢時,指定查詢的歷史版本數(shù)。默認會查詢出最新的數(shù)據(jù)。(有效取值為1到5)
HBase2.2.2安裝和編程實踐

HBase Java API編程實踐

先裝個eclipse,類似安裝hbase的步驟,但是不用重命名下載過的安裝包,不用修改環(huán)境變量,然后再桌面加個快捷方式
HBase2.2.2安裝和編程實踐
到/usr/local/eclipse目錄下 ./eclipse 啟動軟件

新建一個java項目
導(dǎo)入lib

/usr/local/hbase/lib下所有的jar包
/usr/local/hbase/lib/client-facing-thirdparty下所有的jar包

新建類,輸入代碼

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
 
import java.io.IOException;
public class ExampleForHBase {
    public static Configuration configuration;
    public static Connection connection;
    public static Admin admin;
    public static void main(String[] args)throws IOException{
        init();
        createTable("student",new String[]{"score"});
        insertData("student","zhangsan","score","English","69");
        insertData("student","zhangsan","score","Math","86");
        insertData("student","zhangsan","score","Computer","77");
        getData("student", "zhangsan", "score","English");
        close();
    }
 
    public static void init(){
        configuration  = HBaseConfiguration.create();
        configuration.set("hbase.rootdir","hdfs://localhost:9000/hbase");
        try{
            connection = ConnectionFactory.createConnection(configuration);
            admin = connection.getAdmin();
        }catch (IOException e){
            e.printStackTrace();
        }
    }
 
    public static void close(){
        try{
            if(admin != null){
                admin.close();
            }
            if(null != connection){
                connection.close();
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }
 
    public static void createTable(String myTableName,String[] colFamily) throws IOException {
        TableName tableName = TableName.valueOf(myTableName);
        if(admin.tableExists(tableName)){
            System.out.println("talbe is exists!");
        }else {
            TableDescriptorBuilder tableDescriptor = TableDescriptorBuilder.newBuilder(tableName);
            for(String str:colFamily){
                ColumnFamilyDescriptor family = 
ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(str)).build();
                tableDescriptor.setColumnFamily(family);
            }
            admin.createTable(tableDescriptor.build());
        } 
    }
 
    public static void insertData(String tableName,String rowKey,String colFamily,String col,String val) throws IOException { 
        Table table = connection.getTable(TableName.valueOf(tableName));
        Put put = new Put(rowKey.getBytes());
        put.addColumn(colFamily.getBytes(),col.getBytes(), val.getBytes());
        table.put(put);
        table.close(); 
    }
 
    public static void getData(String tableName,String rowKey,String colFamily, String col)throws  IOException{ 
        Table table = connection.getTable(TableName.valueOf(tableName));
        Get get = new Get(rowKey.getBytes());
        get.addColumn(colFamily.getBytes(),col.getBytes());
        Result result = table.get(get);
        System.out.println(new String(result.getValue(colFamily.getBytes(),col==null?null:col.getBytes())));
        table.close(); 
    }
}

啟動HDFS和HBase,run as java application
程序運行成功以后,會在運行結(jié)果中出現(xiàn)“69”
HBase2.2.2安裝和編程實踐
到HBase Shell交互式環(huán)境中,使用如下命令查看student表是否創(chuàng)建成功:
HBase2.2.2安裝和編程實踐
查看student表中的數(shù)據(jù)
HBase2.2.2安裝和編程實踐文章來源地址http://www.zghlxwxcb.cn/news/detail-442422.html

到了這里,關(guān)于HBase2.2.2安裝和編程實踐的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • HBase Java API編程實踐

    HBase Java API編程實踐

    本實例采用Eclipse開發(fā)工具。 啟動Eclipse,啟動以后,出現(xiàn)如下圖所示界面,點擊ok按鈕。 啟動進入Eclipse以后的程序開發(fā)界面如下圖所示。 點擊界面頂部的“File”菜單,在彈出的子菜單(如下圖所示)中選擇“New”,再選擇子菜單中的“Project”。 這時會彈出一個Java工程創(chuàng)建

    2024年02月05日
    瀏覽(28)
  • 大數(shù)據(jù)實驗三-HBase編程實踐

    大數(shù)據(jù)實驗三-HBase編程實踐

    目錄 一.實驗內(nèi)容 二.實驗?zāi)康?三.實驗過程截圖及說明 1、安裝HBase 2、配置偽分布式模式: 3、使用hbase的shell命令來操作表: 4、使用hbase提供的javaAPI來編程實現(xiàn)類似操作: 5、實驗總結(jié)及心得體會 6、完整報告在文章開頭,掛載。 HBase編程實踐: 1)在Hadoop基礎(chǔ)上安裝H

    2024年04月12日
    瀏覽(34)
  • HBase的編程實踐(實驗3_熟悉常用的HBase操作)

    HBase的編程實踐(實驗3_熟悉常用的HBase操作)

    一、Hbase中使用Shell命令: ①?HBase中創(chuàng)建表:(create 命令:第一個變量是表名,然后是列族名) 語法:create \\\'表名稱\\\',\\\'列族名稱1\\\',\\\'列族名稱2\\\',\\\'列族名稱N\\\' 通過命令 describe \\\'student\\\'? 進行查看表的結(jié)構(gòu): (desc ‘表名’,查看表的結(jié)構(gòu)) ? 增加數(shù)據(jù) ②?put: (put 命令:第一

    2024年02月01日
    瀏覽(22)
  • 大數(shù)據(jù)開源框架之HBase編程實踐

    大數(shù)據(jù)開源框架之HBase編程實踐

    HBase的安裝部署請看: (30條消息) 大數(shù)據(jù)開源框架環(huán)境搭建(五)——Hbase完全分布式集群的安裝部署_木子一個Lee的博客-CSDN博客 目錄 任務(wù)1:用HBase提供的HBase Shell命令實現(xiàn)以下指定功能: 1.列出HBase所有的表的相關(guān)信息 2.在終端打印出指定的表的所有記錄數(shù)據(jù); 3.向已經(jīng)創(chuàng)建好

    2024年02月01日
    瀏覽(22)
  • 大數(shù)據(jù)技術(shù)原理與應(yīng)用實驗指南——HBase編程實踐

    大數(shù)據(jù)技術(shù)原理與應(yīng)用實驗指南——HBase編程實踐

    一、 實驗?zāi)康?(1) 熟練使用HBase操作常用的Shell命令。 (2) 熟悉HBase操作常用的Java API。 二、 實驗內(nèi)容 (1) 安裝HBase軟件。 (2) 編程實現(xiàn)指定功能,并利用Hadoop提供的Shell命令完成相同的任務(wù)(實現(xiàn)增、刪、改、查基本操作,統(tǒng)計表的行數(shù),打印表的記錄等操作)。

    2024年02月21日
    瀏覽(24)
  • hbase2.x hbck2處理region方案(長期opening\closing\offline,Report Region Holes,report Unkown server)等

    hbase2.x hbck2處理region方案(長期opening\closing\offline,Report Region Holes,report Unkown server)等

    hbase2.x RIT(region in transition)背景知識 在hbase1.x中transition是令廣大大數(shù)據(jù)運維人員頭疼的一個話題,因為,region 的狀態(tài)轉(zhuǎn)移涉及到了三個核心組件,分別為:hbase master,zookeeper和hbase 的regionserver,這三個組件中的某一個region的狀態(tài)都是一致的情況下,這個region 才算是正常,

    2024年02月03日
    瀏覽(19)
  • 同個線程里,如果線程正在忙過程中,定時器時間到了會被延遲觸發(fā)嗎?

    在同一線程中,如果線程正在忙過程中,定時器的觸發(fā)事件會被延遲,直到線程空閑下來才會被觸發(fā)。這是因為在QT中,線程和定時器的處理都是通過事件循環(huán)來完成的。當線程處于忙碌狀態(tài)時,事件循環(huán)將會被阻塞,直到線程執(zhí)行完當前的工作才會繼續(xù)運行事件循環(huán),處理

    2024年03月10日
    瀏覽(19)
  • 云計算技術(shù) 實驗五 Hbase的安裝和基礎(chǔ)編程

    云計算技術(shù) 實驗五 Hbase的安裝和基礎(chǔ)編程

    參考資料為: 教材代碼-林子雨編著《大數(shù)據(jù)基礎(chǔ)編程、實驗和案例教程(第2版)》教材所有章節(jié)代碼_廈大數(shù)據(jù)庫實驗室博客 1 . 實驗學(xué)時 4學(xué)時 2 . 實驗?zāi)康?熟悉Hbase的安裝和配置。 熟悉Hbase的相關(guān)命令。 實現(xiàn)Hbase的Java編程調(diào)用。 3.實驗內(nèi)容 (一) 安裝Hbase,能夠查詢Hba

    2024年02月11日
    瀏覽(23)
  • ros中常見問題處理:延遲問題解決方法、訂閱的數(shù)據(jù)感覺比發(fā)布的數(shù)據(jù)要多;如果沒有正在接收消息,那么狀態(tài)如何獲???

    在ROS中,消息的發(fā)布和訂閱是異步的,也就是說,當你調(diào)用pub.publish(output_msg)發(fā)布消息時,該函數(shù)會立即返回,并不會等待所有訂閱者接收消息。因此,如果你的程序出現(xiàn)延遲,可能是由于某些原因?qū)е孪⒈欢氯騺G失。 以下是幾種可能導(dǎo)致延遲的原因和解決方法: 1,消

    2024年02月06日
    瀏覽(22)
  • 計算機網(wǎng)絡(luò)開荒2.2-Socket編程

    計算機網(wǎng)絡(luò)開荒2.2-Socket編程

    應(yīng)用編程接口API :就是應(yīng)用進程的控制權(quán)和操作系統(tǒng)的控制權(quán)進行轉(zhuǎn)換的一個系統(tǒng)調(diào)用接口 Berkeley UNIX 操作系統(tǒng)定義了標準API,稱為 套接字接口(socket interface) 簡稱套接字Socket,Linux也是用此標準接口 Windows用的是在Socket interface之上封裝的API:Windows Socket Interface(WINSOCK) ATT 為其

    2024年02月08日
    瀏覽(59)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包