hadoop+hbase+zookeeper+hive

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: hadoop+hbase+zookeeper+hive

hadoop、hbase、zookeeper、hive是大数据里面四个重要的产品,关于这四个产品的介绍,各种书籍和网站介绍得很多,在这里不再赘述,仅介绍在ubunt下如何安装和配置这三种产品。


第一步:配置虚拟机为桥接模式


第二步:安装openssh-server,并且登录不需要


/home/jerry/>apt-get install openssh-server #安装openssh-server

/home/jerry/>ssh  localhost #登录本机,需要密码

/home/jerry/>exit#  退出刚才的 ssh localhost

/home/jerry/>cd  ~/.ssh/# 若没有该目录,请先执行一次ssh localhost

/home/jerry/>ssh-keygen  -t rsa# 会有提示,都按回车就可以

/home/jerry/>cat  ./id_rsa.pub >> ./authorized_keys # 加入授权

/home/jerry/>ssh  localhost#不需要密码


第三步:安装JDK 1.7以上


/home/jerry/>tar -xzf jdk-8u161-linux-x64.tar.gz -C /usr/local

/home/jerry/>cd  /usr/local

/usr/local/>mv  jdk1.8.0_161/ java

/usr/local/>gedit  ~/.bashrc


export JAVA_HOME=/usr/local/java
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin


/usr/local/>source ~/.bashrc

/usr/local/>java -version


出现版本信息,说明配置正确。


第四步:安装hadoop


/home/jerry/>tar -xzf  hadoop-2.6.4.tar.gz -C /usr/local

/home/jerry/>cd  /usr/local

/usr/local/>mv  hadoop-2.6.4/ hadoop

/usr/local/>chown -R  root ./hadoop

/usr/local/>gedit  ~/.bashrc

    export HADOOP_HOME=/usr/local/hadoop
    export PATH=$PATH:$HADOOP_HOME/bin
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
    export JAVA_LIBRAY_PATH=$HADOOP_HOME/lib/native
    export LD_LIBRARY_PATH=$JAVA_LIBRARY_PATH


    /usr/local/>source  ~/.bashrc

    /usr/local/>hadoop  version 


    #查看hsddop版本有内容,说明配置正确


    /usr/local/>gedit  /usr/local/hadoop/etc/hadoop/core-site.xml 


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


    /usr/local/>gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml


      <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>
        <property>
          <name>dfs.namenode.http-address</name>
          <value>0.0.0.0:50070</value>
        </property>
      </configuration>


      • dfs.namenode.name.dir:namenode位置
      • dfs.namenode.data.dir:datanode位置
      • dfs.namenode.http-address:hadoop WEB端口


      gedit /usr/local/hadoop/etc/hadoop/hdoop-env.sh


      语句


      export JAVA_HOME=$JAVA_HOME


       修改为


      export JAVA_HOME=/usr/local/java



      hadoop WEB 页面:http://localhost:50070

      image.png


      /usr/local/>cd hadoop

      /usr/local/hadoop/>hdfs  namenode -format

      /usr/local/hadoop/>sbin/start-dfs.sh

      /usr/local/hadoop/>cp  etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml

      /usr/local/hadoop/>gedit  /usr/local/hadoop/etc/hadoop/yarn-site.xml



      <configuration>
        <property>
          <name>yarn.nodemanager.aux-server</name>
          <value>mapreduce_shuffle</value>
        </property>
      </configuration>


      /usr/local/hadoop/>sbin/start-dfs.sh(./sbin/stop-dfs.sh)

      /usr/local/hadoop/>sbin/start-yarn.sh(./sbin/stop-yarn.sh)

      /usr/local/hadoop/>sbin/mr-jobhistory-daemon.sh  start historyserver #查看历史任务( ./sbin/mr-jobhistory-daemon.sh stop historyserver)


      hadoop安全模式,比如hadoop非正常退出,会进入安全模式

      $hdfs dfsadmin -safemode get|wait|entry|leave|wait

      • get:获得当前是否进入安全模式
      • wait:等待进入安全模式
      • entry:强制进入安全模式
      • leave:强制离开安全模式


      第五步:安装HBase


      /home/jerry/>tar -xzf  hbase-2.2.4-bin.tar.gz -C /usr/local

      /home/jerry/>cd  /usr/local

      /usr/local/>mv  hbase-2.2.4/ hbase

      /usr/local/>gedit  ~/.bashrc



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


      /usr/local/>source  ~/.bashrc

      /usr/local/>chown -R  root ./habase

      /usr/local/>gedit 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>
        <property>
              <name>hbase.zookeeper.property.dataDir</name>
              <value>/usr/local/zookeeper</value>
          </property>
      </configuration>


      hbase.rootdir:
      hbase在HDFS的位置,端口号一定要与/usr/local/hadoop/etc/hadoop/core-site.xml保持一致。

      • hbase.cluster.distributed:
        是否为分布式,在这里为伪分布式
      • hbase.unsafe.stream.capability.enforce:
        在分布式情况下, 一定设置为false(hbase的一个bug)
      • hbase.zookeeper.property.dataDir:
        zookeeper的位置。


      /usr/local/>hbase  version #有结果说明配置正确

      /usr/local/>hbase-daemon.sh   start master

      /usr/local/>start-hbase.sh #用于启动HBase,关闭HBase用stop-hbase.sh   速度相当慢,./bin/hdfs namenode -format,但是数据全部丢失

      /usr/local/>hbase  shell#用于打开shell命令行模式


      HBase WEB 页面http://localhost:16010


      image.png


      第六步:安装zookeeperz文件


      /home/jerry/>tar -zxvf  zookeeper-3.4.11.tar.gz

      /home/jerry/>mv  zookeeper-3.4.11 /usr/local/zookeeper

      /home/jerry/>cd  /usr/local/zookeeper/conf  //切换到该目录

      /usr/local/zookeeper/conf  >cp zoo_sample.cfg zoo.cfg//复制一份取名为zoo.cfg

      /usr/local/zookeeper/conf  >gedit zoo.cfg


      ...
      syncLimit=5
      # the directory where the snapshot is stored.
      # do not use /tmp for storage, /tmp here is just 
      # example sakes.
      dataDir=/tmp/zookeeper
      dataLogDir=/tmp/zookeeper/logs
      # the port at which the clients will connect
      clientPort=2181
      ...


      确保/tmp/zookeeper,/tmp/zookeeper/logs存在


      /usr/local/>source  ~/.bashrc

      /usr/local/>chown -R  root ./habase

      /usr/local/>hbase  version

      /usr/local/zookeeper/conf >gedit ~/.bashrc


      export ZOOKEEPER_HOME=/usr/local/zookeeper
      export PATH=$PATH:$ ZOOKEEPER_HOME/bin



      /usr/local/zookeeper/conf  >source ~/.bashrc

      cd ../bin/

      /usr/local/zookeeper/bin>zkServer.sh  start


      在实际工作中,建议启动服务以后确定启动没有问题再关闭,最后统一启动,启动顺序为:

      • haddoop
      • hbase
      • zookeep

      启动完毕


      jps

      114865 NameNode

      112467 JobHistoryServer

      116114 HRegionServer

      111637 ResourceManager

      115271 SecondaryNameNode

      43386 Jps

      115994 HMaster

      115932 HQuorumPeer

      115023 DataNode

      111774 NodeManager


      第七步 安装hive


      1 安装hive


      /home/jerry/>tar  -xzf apache-hive-2.3.4-bin.tar.gz -C /usr/local

      /home/jerry/>cd /usr/local

      /usr/local/>mv apache-hive-2.3.4-bin/ hive

      /usr/local/>gedit ~/.bashrc


      export HIVE_HOME=/usr/local/hive
      export HCAT_HOME=$HIVE_HOME/hcatalog
      export HIVE_CONF=$HIVE_HOME/conf
      export PATH=$PATH:$HIVE_HOME/bin



      /usr/local/>source  ~/.bashrc

      /usr/local/hive/>cd hive

      /usr/local/hive/>cp  conf/hive-default.xml.template conf/hive-site.xml

      /usr/local/hive/>gedit conf/hive-site.xml



      <property>
             <name>javax.jdo.option.ConnectionURL</name>
             <value>jdbc:mysql://localhost:3306/hive?characterEncoding=UTF-8&amp;useSSL=false</value>
          </property>
          <property>
             <name>javax.jdo.option.ConnectionDriverName</name>
             <value>com.mysql.jdbc.Driver</value>
          </property>
          <property>
             <name>javax.jdo.option.ConnectionUserName</name>
              <value>hive</value>
          </property>
          <property>
             <name>javax.jdo.option.ConnectionPassword</name>
              <value>hive</value>
          </property>
             <property>
            <name>hive.metastore.schema.verification</name>
                  <value>false</value>
             </property>


      2 安装mysql


      /usr/local/hive/>sudo apt-get  install mysql-server

      /usr/local/hive/>service mysql start


      下载mysql-jdbc包


      /usr/local/hive/>tar -xzf  mysql-connector-java-5.1.48.tar.gz

      /usr/local/hive/>mv /home/jerry/mysql-connector-java-5.1.48/mysql-connector-java-5.1.48-bin.jar  lib/


      下载disruptor-3.4.2.jar拷贝到/usr/local/hive/lib/中替换原来的disruptor包


      /usr/local/hive/>mysql -u root -p

      mysql> create user 'hive' identified by 'hive';

      mysql> grant all privileges on *.* to 'hive'@'localhost'  identified by 'hive';

      mysql> exit

      /usr/local/hive/>hive --service metastore &

      /usr/local/hive/>-uhive -phive

      mysql> create database hive;

      mysql> exit

      /usr/local/hive/>start-dfs.sh

      /usr/local/hive/>hive

      Hive-on-MR is deprecated in Hive 2  and may not be available in the future versions. Consider using a different  execution engine (i.e. spark, tez) or using Hive 1.X releases.

      hive>


      几种错误现象。


      1,NoNode for /hbase/master


      hbase(main):005:0>  status

      ERROR:  KeeperErrorCode = NoNode for /hbase/master

      For  usage try 'help "status"'

      Took  8.1764 seconds


      原因

      HMaster进程没有打开


      2,启动hadoopmei没有datanode

      cat /usr/local/hadoop/tmp/dfs/name/current/VERSION

      记住clusterID

      edit /usr/local/hadoop/tmp/dfs/data/current/VERSION

      修改clusterID为刚才记录的name里面的clusterID

      重新启动hadoop


      3,启动hbase后不久HMaster就关闭

      如果使用后hbase自带的zookeeper,建议单独安装zookeeper,否则到zookeeper主目录下删除hbase下所有内容


      相关实践学习
      lindorm多模间数据无缝流转
      展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
      云数据库HBase版使用教程
      &nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
      目录
      相关文章
      |
      1月前
      |
      分布式计算 资源调度 Hadoop
      【赵渝强老师】基于ZooKeeper实现Hadoop HA
      本文介绍了如何在4个节点(bigdata112、bigdata113、bigdata114和bigdata115)上部署HDFS高可用(HA)架构,并同时部署Yarn的HA。详细步骤包括环境变量设置、配置文件修改、ZooKeeper集群启动、JournalNode启动、HDFS格式化、ZooKeeper格式化以及启动Hadoop集群等。最后通过jps命令检查各节点上的后台进程,确保部署成功。
      |
      2月前
      |
      SQL 分布式计算 Hadoop
      手把手的教你搭建hadoop、hive
      手把手的教你搭建hadoop、hive
      160 1
      |
      2月前
      |
      分布式计算 NoSQL Java
      Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
      Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
      55 2
      |
      2月前
      |
      分布式计算 负载均衡 算法
      Hadoop-31 ZooKeeper 内部原理 简述Leader选举 ZAB协议 一致性
      Hadoop-31 ZooKeeper 内部原理 简述Leader选举 ZAB协议 一致性
      33 1
      |
      2月前
      |
      分布式计算 Java Hadoop
      Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
      Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
      70 1
      |
      2月前
      |
      分布式计算 监控 Hadoop
      Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
      Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
      47 1
      |
      2月前
      |
      分布式计算 Hadoop Unix
      Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
      Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
      52 1
      |
      2月前
      |
      分布式计算 Kubernetes Hadoop
      大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
      大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
      186 6
      |
      2月前
      |
      分布式计算 资源调度 Hadoop
      大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
      大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
      78 2
      |
      2天前
      |
      存储 分布式计算 大数据
      Flume+Hadoop:打造你的大数据处理流水线
      本文介绍了如何使用Apache Flume采集日志数据并上传至Hadoop分布式文件系统(HDFS)。Flume是一个高可用、可靠的分布式系统,适用于大规模日志数据的采集和传输。文章详细描述了Flume的安装、配置及启动过程,并通过具体示例展示了如何将本地日志数据实时传输到HDFS中。同时,还提供了验证步骤,确保数据成功上传。最后,补充说明了使用文件模式作为channel以避免数据丢失的方法。
      26 4