ubantu18.04HBase2.2.2安装和编程实践指南

说明:本文图片较多,耐心等待加载。(建议用电脑)

注意所有打开的文件都要记得保存。

第一步:准备工作

本文是在之前Hadoop搭建完集群环境后继续进行的,因此需要读者完成我之前教程的所有操作。

这一章使用的是之前配置好的Master主机

第二步:安装并配置HBase2.2.2

1. HBase2.2.2安装

点击下面的地址下载HBase2.2.2安装文件HBase官网下载地址
也可以直接点击这里从百度云盘下载软件(提取码:ziyu)。进入百度网盘后,进入“软件”目录,找到hbase-2.2.2-bin.tar.gz文件,下载到本地。

我们这里直接在虚拟机打开浏览器,输入地址:Index of /dist/hbase

选择 找到2.2.2/

 点击hbase-2.2.2-bin.tar.gz文件

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

注意:英文版是Downloads,,中文版是下载。

1.2 将解压的文件名hbase-2.2.2改为hbase,以方便使用,命令如下:

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

 下面把hbase目录权限赋予给hadoop用户:

注意下面的是你自己的用户名hadoop

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

1.3 配置环境变量 

在终端输入以下i命令:

vim ~/.bashrc

 在第一行加入以下内容

export PATH=$PATH::/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/hbase/bin

保存退出后,继续输入

source ~/.bashrc

1.4 添加HBase权限

在终端继续输入,注意下面的hadoop是自己的用户名。

cd /usr/local
sudo chown -R hadoop ./hbase       #将hbase下的所有文件的所有者改为hadoop,hadoop是当前用户的用户名。

1.5 查看HBase版本,确定hbase安装成功,命令如下:

/usr/local/hbase/bin/hbase version

也可以直接输入

hbase version

 如果输出以下内容,虽然他正确输出了版本号,但是他的加载出现了问题,我们需要解决一下,避免以后出现问题。

 解决方法:

终端输入以下内容

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

在文件末尾添加这两行: 

export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true
export HBASE_SKIP_GETJAVA_PROPERTY=1

 CTRL+O,保存,然后按一下回车,Ctrl+X退出。

解释一下为啥这样能解决

  • HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true:禁用 HBase 自动去尝试使用 hadoop classpath 命令解析依赖路径。

  • HBASE_SKIP_GETJAVA_PROPERTY=1:强制不去加载 org.apache.hadoop.hbase.util.GetJavaProperty 类(就是那个报错的主类)。

让后我们重新执行之前的命令

hbase version

2. HBase配置

 HBase有三种运行模式,单机模式、伪分布式模式、分布式模式。作为学习,我们重点讨论伪分布式模式

在终端输入以下命令

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

在文件内加入以下内容     注意这里的jdk版本号,是你自己的那个我这里是441

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

 然后保存退出,继续输入

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

在文件内加上以下内容(注意下面的Master,是因为我的是集群式hadoop,如果是单机的话就是localhost)

<configuration>
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://Master: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>

3.接下来测试运行HBase。

1.首先登陆ssh

ssh localhost

2.启动hadoop集群(之前的教程里都有,这里直接输入命令)并用jps检查是否成功启动

注意如果是集群式你就得启动从机Slave1。我这里需要启动

cd /usr/local/hadoop
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver

 3.切换目录至/usr/local/hbase;再启动HBase.命令如下:

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

 也可以把前面的bin/去掉,直接输入start-hbase.sh

输入命令jps,看到以下界面说明hbase启动成功

 4.进入shell界面:

bin/hbase shell

5.退出 shell界面(我们这里先不退出)

exit

6.停止HBase运行,命令如下:(我们这里先不停止)

bin/stop-hbase.sh

注意:

这里启动关闭Hadoop和HBase的顺序一定是:
启动Hadoop—>启动HBase—>关闭HBase—>关闭Hadoop

我们这里就先不关闭了,继续做。

 第三步:编程实践

1. 利用Shell命令

1.1 HBase中创建表

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

 查看“student”表的基本信息

describe 'student'

1.2 HBase数据库基本操作

1.添加数据
put 'student','95001','Sname','LiYing'
 put 'student','95001','course:math','80'
2.查看数据

get命令

get 'student','95001'

scan命令

 scan 'student'
 3.删除数据
delete 'student','95001','Ssex'
deleteall 'student','95001'

4.删除表

删除表有两步,第一步先让该表不可用,第二步删除表。

list
disable 'student'  
drop 'student'
list

1.3 查询表历史数据 

create 'teacher',{NAME=>'username',VERSIONS=>5}
put 'teacher','91001','username','Mary'
put 'teacher','91001','username','Mary1'
put 'teacher','91001','username','Mary2'
put 'teacher','91001','username','Mary3'
put 'teacher','91001','username','Mary4'  
put 'teacher','91001','username','Mary5'
get 'teacher','91001',{COLUMN=>'username',VERSIONS=>5}
get 'teacher','91001',{COLUMN=>'username',VERSIONS=>3}

2.HBase Java API编程实践 

执行如下命令启动Eclipse:

cd /usr/local/eclipse
./eclipse 

点击Launch

 

 继续

继续 

继续

 

 

 

 然后把下面的代码粘贴进去

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 (connection != null) {
                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("table already 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();
    }
}

然后点击运行按钮,出现69即为成功

 这时,可以到HBase Shell交互式环境中,使用如下命令查看student表是否创建成功:

在终端输入

bin/hbase shell
list
scan 'student'

出现如上界面即为成功。 

结语:整体的操作步我都给大家写出来,并且截图了,大家只需要无脑粘贴就好了,具体的讲解可以看我的资料里的文档解释更加详细,这个实验就结束了。 

上面内容制作不易,喜欢的点个赞和收藏支持一下吧!!

后期会持续更新更多大数据内容,如果想共同学习,就点点关注把(

<think>好的,我现在需要帮助用户在Ubuntu 18.04安装配置pyenv及pyenv-virtualenv。首先,我得回顾一下自己之前学过的相关知识,以及参考用户提供的引用内容。用户提到了三篇引用,其中引用[2][3]应该是最相关的。 首先,安装pyenv的步骤。根据引用[2][3],安装pyenv通常是通过Git克隆仓库到用户目录下的.pyenv文件夹。然后需要配置环境变量,比如在.bashrc中添加路径。接着,安装必要的依赖包,比如curl、git构建Python所需的库。用户可能需要运行类似sudo apt-get install的指令来安装这些依赖。 然后,安装不同版本的Python。pyenv允许用户安装多个Python版本,并切换使用。需要先安装依赖,如引用[2]提到的安装依赖步骤,可能包括libssl-dev、libreadline-dev等。之后,使用pyenv install命令安装特定版本的Python,例如3.8.5。用户可能还需要设置全局或本地Python版本。 接下来是pyenv-virtualenv的配置。引用[2][3]提到,pyenv-virtualenv是管理虚拟环境的插件。安装方法可能是通过Git克隆到pyenv的插件目录,或者使用其他方法。安装完成后,需要创建虚拟环境,激活退出等操作。例如,使用pyenv virtualenv 3.8.5 myenv创建名为myenv的环境,然后用pyenv activate myenv激活。 不过,用户现在使用的是Ubuntu 18.04,所以需要注意是否有特别的步骤。比如,是否需要用特定的命令更新软件源,或者某些依赖包的版本问题。此外,确保所有命令的正确性,比如添加环境变量到.bashrc后需要source ~/.bashrc使其生效。 还需要检查是否有潜在的问题,例如权限问题,是否需要使用sudo,或者路径配置错误。比如,如果pyenv没有正确添加到PATH中,命令可能无法识别。另外,安装Python版本时可能会因为缺少依赖而失败,这时候需要确保所有构建依赖已安装。 另外,引用[3]提到卸载pyenv的方法,但用户需要的是安装,这部分暂时不需要考虑。用户可能还需要知道如何验证安装是否成功,比如运行pyenv --version或者检查虚拟环境的创建激活是否正常。 总结步骤应该是:安装依赖→安装pyenv→配置环境变量→安装Python版本→安装pyenv-virtualenv→配置虚拟环境。然后,生成相关问题的时候,可能需要包括如何切换Python版本,如何管理虚拟环境,常见错误处理等。 现在需要将这些步骤按逻辑顺序整理出来,确保每一步都清晰,并正确引用用户提供的资料。同时,注意使用正确的格式,比如代码块用反引号包裹,行内代码用$符号,但根据用户的要求,数学表达式才用$,而代码块应该用三个反引号。不过用户给出的示例中代码块是用三个反引号包裹的,所以需要遵循。 最后,生成相关问题,可能涉及安装过程中的常见问题,优化配置,不同版本的管理,虚拟环境的使用场景等。</think>### 在 Ubuntu 18.04安装配置 pyenv 及 pyenv-virtualenv #### 1. **安装依赖** 首先安装系统依赖,确保后续步骤顺利: ```bash sudo apt-get update sudo apt-get install -y git curl make build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget llvm libncurses5-dev \ libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev ``` 这些依赖是编译 Python 的必需组件[^3]。 #### 2. **安装 pyenv** 通过 Git 克隆 pyenv 到用户主目录的 `.pyenv` 文件夹: ```bash git clone https://github.com/pyenv/pyenv.git ~/.pyenv ``` **配置环境变量**: 将以下内容添加到 `~/.bashrc` 文件末尾: ```bash export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv virtualenv-init -)" ``` 激活配置: ```bash source ~/.bashrc ``` #### 3. **安装 Python 版本** - 查看可安装的 Python 版本: ```bash pyenv install --list ``` - 安装指定版本(例如 Python 3.8.5): ```bash pyenv install 3.8.5 ``` - 设置全局默认 Python 版本: ```bash pyenv global 3.8.5 ``` #### 4. **安装 pyenv-virtualenv** pyenv-virtualenv 是 pyenv 的插件,用于管理虚拟环境。 如果已按步骤 2 配置 `eval "$(pyenv virtualenv-init -)"`,则插件已启用。若未集成,可手动安装: ```bash git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv ``` #### 5. **使用 pyenv-virtualenv** - 创建虚拟环境: ```bash pyenv virtualenv 3.8.5 my_project_env # 基于 Python 3.8.5 创建名为 my_project_env 的虚拟环境 ``` - 激活虚拟环境: ```bash pyenv activate my_project_env ``` - 退出虚拟环境: ```bash pyenv deactivate ``` - 删除虚拟环境: ```bash pyenv uninstall my_project_env ``` #### 6. **验证安装** - 检查 pyenv 版本: ```bash pyenv --version ``` - 查看已安装的 Python 版本: ```bash pyenv versions ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值