Ubuntu16.04下Hadoop+Hive+HBase安装部署实践

     之前断断续续搞过一些Hadoop生态的学习和小实践,现在有这个需要了就重新捡起来了,但是机器上没有这套环境需要重新安装一下,其实本质上来说在Linux下安装很多框架或者是系统并不麻烦,大多都是解压缩,改一些配置文件,然后配置一下对应的环境变量最终source使其生效就可以了。

     最近需要使用到HBase数据库,HBase数据库要依赖Hadoop,我们选择使用MySQL作为Hive的元数据,所以在安装配置Hive之前需要安装好Hadoop和MySQL才可以。

    为了方便使用,我将自己在整个安装过程中使用到的所有的安装包打包上传CSDN中,如果需要可以直接去下载使用,资源下载地址在这里

    接下来我们开始实践,首先是Hadoop的安装搭建。这里我选择的是2.7.x系列的版本,之前用的也是这个系列的,这个没有具体要求,感觉1.x系列的现在比较老了,2.x很多功能也都是兼容了1.x系列版本的。

     因为是自己使用的机器所以拥有root权限,但是安装Hadoop最好还是不要用root账户,需要创建一个名为hadoop的用户,命令如下:

sudo useradd -m hadoop -s /bin/bash  #创建了可以登陆的 hadoop 用户,并使用 /bin/bash 作为 shell

      之后为hadoop用户设置密码,这个步骤也是很重要的,因为后面的很多安装都要这个密码:

sudo passwd hadoop  
sudo adduser hadoop sudo
连续两次的密码确认,均正确输入就可以了

       我使用的xshell作为Linux的连接工具,这时候可以新建一个会话,以hadoop的身份进行登录认证。

      因为后面的操作都要是在切换在了hadoop用户下进行的,所以命令前面都要加一个sudo,具体可以去百度sudo命令,这里就不多说了,下面开始以hadoop用户登录,实践整个部署安装。

    登录第一步就是需要更新源信息,不然会导致部分安装失败:

sudo apt-get update

      由于Vim、gedit等编辑工具之前已经安装配置好了,这里就不需要安装了,需要的话可以自行安装一下。可选命令如下:

sudo apt-get update 
sudo apt-get install gedit-gmate                 
sudo apt-get install gedit-plugins               
sudo apt-get remove gedit 
sudo apt-get install gedit
sudo apt-get install vim
sudo apt-get install vi

       接下来的第一步我们首先来配置java运行环境【所使用的的安装包都在前文给的资源链接里面】:

sudo mkdir -pv jvm #创建/usr/lib/jvm目录用来存放JDK文件
sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm  #把JDK文件解压到/usr/lib/jvm目录下

      接下来需要配置环境变量:
     首先打开指定文件:

cd ~
vim ~/.bashrc

    增加下面的内容到文件中:

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

     使得上述的新增配置生效:

source ~/.bashrc

     之后输入下面命令验证是否配置成功:

java -version

     下面的输出即表示安装配置JDK完成:

      之后我们开始安装ssh:

sudo apt-get install openssh-server

     通过ssh-keygen 生成密钥,实现后面的免密登录:

cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa              # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys  # 加入授权

     操作结果如下:

      完成认证后,ssh localhost就可以直接连接登录上了,可以看到已经不再需要密码了。

      基础的环境配置完成后就可以安装Hadoop了,安装包都放在前文的资源链接里面了,安装路径选择在/usr/local/中,下面是安装过程:

sudo tar -zxf ~/下载/hadoop--2.7.1.tar.gz -C /usr/local    # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.7.1/ ./hadoop            # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop       # 修改文件权限

     完成上述操作后,其实Hadoop已经安装好了,这就是所谓的【解压即安装】,之后无非就是修改一些配置文件,首先简单来验证下是否可用:

cd /usr/local/hadoop
./bin/hadoop version

     输出如下:

     这种默认的无修改的配置下,Hadoop是以单机模式下运行的,我们不需要单机运行模式,这里选择是伪分布模式进行运行,因为实际资源不多,没有三五台的机器资源可以用。

     按照上述安装操作步骤,Hadoop的配置文件都在 /usr/local/hadoop/etc/hadoop/下面,下面开始修改配置:

     core-site.xml原始内容如下:

<configuration>
</configuration>

       vim修改为:

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

     hdfs-site.xml原始内容如下:

<configuration>
</configuration>

       vim修改为:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
</configuration>

        之后更新配置文件,加入下面的内容:

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

       之后同样执行source命令使其生效。 

       配置完成后,执行 NameNode 的格式化:

./bin/hdfs namenode -format

    输出如下:

     日志显示成功格式化,退出状态为0,表示成功执行了。

     之后借助于jps命令来查看是否启动成功:

     可以看到已经有在成功运行的DataNode和NameNode。

     到这里Hadoop的安装就完成了,接下来就开始安装Hive了。
      在最开始的时候我们说到过了,选择MySQL作为Hive的元数据库进行登录,所以在安装配置Hive之前需要先安装MySQL

,所用到的安装包也都在前文提供的资源链接里面了,下面开始安装MySQL:

    执行安装命令:

sudo apt-get install mysql-server

    执行输出如下:

    安装过程中会出现一个界面要求你输入MySQL的登录密码,同样是两次确认输入。安装完成后启动,如下:

     后面遇到了一个报错:

FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.me

     这是因为MySQL服务在安装的时候没有进行初始化导致的,这里直接对其进行初始化,如下:

       完成MySQL安装后,要安装下连接器:

tar -zxvf mysql-connector-java-5.1.40.tar.gz
cp mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar  /usr/local/hive/lib

       完成上述操作后就可以部署Hive了,Hive的安装整体比较简单:

udo tar -zxvf ./apache-hive-3.1.2-bin.tar.gz -C /usr/local   # 解压到/usr/local中
cd /usr/local/
sudo mv apache-hive-3.1.2-bin hive       # 将文件夹名改为hive
sudo chown -R dblab:dblab hive            # 修改文件权限

      之后修改配置文件:

vim ~/.bashrc

    增加下面的配置内容:

export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
export HADOOP_HOME=/usr/local/hadoop

      最后使配置生效:

source ~/.bashrc

     hive的配置文件在conf目录下面,这里我们修改里面hive-site.xml文件:

vim ./conf/hive-site.xml

      新增下面内容:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
    <description>JDBC connect string for a JDBC metastore</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>username to use against metastore database</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
    <description>password to use against metastore database</description>
  </property>
</configuration>

      source生效后,执行下面命令,避免出现Hive metastore database is not initialized的错误:

./bin/schematool -dbType mysql -initSchema

      之后,输入 hive 启动hive进入交互式shell环境,输出如下:

      到这里hive的安装部署就已经完成了,简单操作一下:

    首先查看了一下已有的数据库信息,之后创建了名为hive的数据库,再次查看数据库已经出现了新创建的hive数据库了,要注意的是这里hive的每条命令执行完成后都会出现一个OK,这个仅仅是表示执行成功的意思。

     最后就到了安装配置HBase的阶段了。因为HBase对Hadoop是有很强的版本依赖的,所以这里牵涉到按照与我们现在已经安装好的Hadoop版本对应的HBase才可以,下面是从网上找到的一张版本关系对应表:

      可以看到我们安装的Hadoop2.7.1可以对应安装1.2.x、1.3.x和2.0.x三个版本的HBase,这里我们选择了1.2.5作为对应的安装版本,所使用的的安装包都在前文提供的资源链接里面。

    其实不同软件间的安装没有很大的区别的,这里贴出来操作过程:

sudo tar -zxvf ./hbase-1.2.5-bin.tar.gz -C /usr/local
sudo mv ./hbase-1.2.5 ./hbase
sudo chown -R hadoop ./hbase  #将HBASE目录的操作权限赋予hadoop用户

      同样是解压即安装,之后配置文件:

vim ~/.bashrc

      新增下面的内容:

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

    最后行source命令使上述配置在当前终端立即生效。

    接下来查看一下HBase版本信息:

    这里我们不再去看单机运行模式,而是同Hadoop一样直接实践伪分布模式:
    修改Hbase的配置文件:

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

     新增下面的内容:

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

        最后行source命令使上述配置在当前终端立即生效。之后配置/usr/local/hbase/conf/hbase-site.xml文件:

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

     原始文件应为空的,替换为下面的内容:

<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>

     hbase.rootdir指定HBase的存储目录;hbase.cluster.distributed设置集群处于分布式模式.另外,上面配置文件中,hbase.unsafe.stream.capability.enforce这个属性的设置,是为了避免出现启动错误。也就是说,如果没有设hbase.unsafe.stream.capability.enforce为false,那么,在启动HBase以后,会出现无法找到HMaster进程的错误,启动后查看系统启动日志(/usr/local/hbase/logs/hbase-hadoop-master-ubuntu.log),会发现如下错误:

    反之,在配置文件中事先指定后,我们执行HBase的启动命令如下:

      出现上述信息即表示启动成功,进入了到了hbase的交互式环境里面了。

     查看对应日志:

cat hbase-hadoop-master-model.log

     结果如下所示:

     已经正常运行了。

      如果不再使用HBase了可以关闭:

      Hadoop是HBase运行的前提基础,所以想要运行HBase需要先启动Hadoop,同理,关闭服务的时候需要先停止HBase之后才能停止Hadoop。

    到这里,本文的安装部署工作就全部结束了,后面会实践Python操作HBase。

©️2020 CSDN 皮肤主题: 护眼 设计师:闪电赇 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值