完全分布式安装Hadoop,Hive,Hbase,Hwi,Zookeeper
其他部分见:
HDFS YARN zookeeper HBASE HIVE HIVE hwi的启动
HDFS和HBASE动态增加和减少节点
一.下载介质到/opt下面:
1.hadoop
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz

2.下载jdk1.8.0_121
3.下载mysql
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-server-5.7.17-1.el6.x86_64.rpm –no-check-certificate

4.下载hive
wget http://mirrors.cnnic.cn/apache/hive/hive-2.1.1/apache-hive-2.1.1-bin.tar.gz
wget http://mirrors.cnnic.cn/apache/hive/hive-2.1.1/apache-hive-2.1.1-src.tar.gz

5.下载zookeeper
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.5.2-alpha/zookeeper-3.5.2-alpha.tar.gz –no-check-certificate

6.下载hbase
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/1.3.0/hbase-1.3.0-bin.tar.gz –no-check-certificate

7.下载其他:

下载storm

[root@www.ljt.cos02 opt]# wget https://mirrors.cnnic.cn/apache/storm/apache-storm-1.1.0/apache-storm-1.1.0.tar.gz –no-check-certificate

下载sqoop

wget https://mirrors.cnnic.cn/apache/sqoop/1.99.7/sqoop-1.99.7-bin-hadoop200.tar.gz –no-check-certificate

下载spark

wget https://mirrors.cnnic.cn/apache/spark/spark-2.1.0/spark-2.1.0-bin-hadoop2.7.tgz –no-check-certificate
wget https://mirrors.cnnic.cn/apache/spark/spark-2.1.0/spark-2.1.0-bin-without-hadoop.tgz –no-check-certificate

下载kafka

wget https://mirrors.cnnic.cn/apache/kafka/0.10.1.1/kafka_2.11-0.10.1.1.tgz –no-check-certificate

下载flume

wget https://mirrors.cnnic.cn/apache/flume/1.7.0/apache-flume-1.7.0-bin.tar.gz –no-check-certificate
二.准备3个节点:
1.www.ljt.cos01, www.ljt.cos02, www.ljt.cos03而且已经配置了ssh互信,而且已经关闭了防火墙
2.应用解压安装目录为/app
3.HDFS目录为:/app/dirhadoop/
三.安装hadoop
1.环境变量—四个节点都要执行

echo ‘export JAVA_HOME=/app/jdk1.8.0_121’ >> /etc/profile
echo ‘export CLASS_PATH=.:JAVAHOME/lib/dt.jar:JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar’ >> /etc/profile
echo ‘export HADOOP_HOME=/app/hadoop-2.7.3’ >>/etc/profile
echo ‘export PATH=PATH:PATH:HADOOP_HOME/bin:JAVAHOME/bin:JAVA_HOME/bin:JAVA_HOME/jre/bin’ >> /etc/profile
source /etc/profile
2.创建HDFS使用的目录:–四个节点都要执行

  1. #core-site.xml的hadoop.tmp.dir
  2. mkdir -p /app/dirhadoop/tmp
  3. #hdfs-site.xml的dfs.namenode.name.dir
  4. mkdir -p /app/dirhadoop/dfs/name
  5. #hdfs-site.xml的dfs.datanode.data.dir
  6. mkdir -p /app/dirhadoop/dfs/data
    3.配置hadoop-env.sh
    echo ‘export JAVA_HOME=/app/jdk1.8.0_121’ >>/app/hadoop-2.7.3/etc/hadoop/hadoop-env.sh
    4.配置core-site.xml
    (1)hadoop.tmp.dir定义了hdfs的临时文件存放目录
    (2)>fs.default.name指定了如何访问HDFS,例如hbase设置为:
    hbase.rootdirhdfs://www.ljt.cos01:9000/hbase

vi /app/hadoop-2.7.3/etc/hadoop/core-site.xml

fs.default.name
hdfs://www.ljt.cos01:9000

hadoop.tmp.dir
/app/dirhadoop/tmp

5.配置hdfs-site.xml
(1)dfs.namenode.name.dir
(2)dfs.datanode.data.dir

dfs.replication
2

dfs.namenode.name.dir
file:/app/dirhadoop/dfs/name

dfs.datanode.data.dir
file:/app/dirhadoop/dfs/data

6.配置mapred-site.xml
(1)mapreduce.jobhistory.webapp.address
定义了访问网址
(2)部署完成之后,可以通过sbin/mr-jobhistory-daemon.sh start historyserver
启动mapreduce.jobhistory.webapp

vi /app/hadoop-2.7.3/etc/hadoop/mapred-site.xml

mapreduce.framework.name
yarn

mapreduce.jobhistory.address
www.ljt.cos01:10020

mapreduce.jobhistory.webapp.address
www.ljt.cos01:19888

7.配置yarn-site.xml
(1)

vi /app/hadoop-2.7.3/etc/hadoop/slaves

www.ljt.cos02
www.ljt.cos03
node04

(2)
a.yarn.resourcemanager.webapp.address定义网页访问:
/app/hadoop-2.7.3/sbin/start-yarn.sh启动之后,就可以类似
http://192.168.13.129:8088/cluster访问了

vi /app/hadoop-2.7.3/etc/hadoop/yarn-site.xml

yarn.nodemanager.aux-services
mapreduce_shuffle

yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler

yarn.resourcemanager.address
www.ljt.cos01:8032

yarn.resourcemanager.scheduler.address
www.ljt.cos01:8030

yarn.resourcemanager.resource-tracker.address
www.ljt.cos01:8031

yarn.resourcemanager.admin.address
www.ljt.cos01:8033

yarn.resourcemanager.webapp.address
www.ljt.cos01:8088

8.www.ljt.cos01完成以上配置之后:
scp -r /app/hadoop-2.7.3 www.ljt.cos02:/app/
scp -r /app/hadoop-2.7.3 www.ljt.cos03:/app/
scp -r /app/hadoop-2.7.3 node04:/app/
9.在master节点(www.ljt.cos01)格式化hdfs
hdfs namenode -format
10.完成之后,master节点启动HDFS
(1)启动hdfs:
[root@www.ljt.cos01 ~]# /app/hadoop-2.7.3/sbin/start-dfs.sh
Starting namenodes on [www.ljt.cos01]
www.ljt.cos01: Warning: Permanently added the RSA host key for IP address ‘192.168.13.129’ to the list of known hosts.
www.ljt.cos01: starting namenode, logging to /app/hadoop-2.7.3/logs/hadoop-root-namenode-www.ljt.cos01.out
www.ljt.cos02: starting datanode, logging to /app/hadoop-2.7.3/logs/hadoop-root-datanode-www.ljt.cos02.out
www.ljt.cos03: starting datanode, logging to /app/hadoop-2.7.3/logs/hadoop-root-datanode-www.ljt.cos03.out
node04: starting datanode, logging to /app/hadoop-2.7.3/logs/hadoop-root-datanode-node04.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /app/hadoop-2.7.3/logs/hadoop-root-secondarynamenode-www.ljt.cos01.out

网页查看:
http://192.168.13.129:50070/dfshealth.html#tab-overview

(2)启动yarn
[root@www.ljt.cos01 ~]# /app/hadoop-2.7.3/sbin/start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /app/hadoop-2.7.3/logs/yarn-root-resourcemanager-www.ljt.cos01.out
www.ljt.cos03: starting nodemanager, logging to /app/hadoop-2.7.3/logs/yarn-root-nodemanager-www.ljt.cos03.out
www.ljt.cos02: starting nodemanager, logging to /app/hadoop-2.7.3/logs/yarn-root-nodemanager-www.ljt.cos02.out
node04: starting nodemanager, logging to /app/hadoop-2.7.3/logs/yarn-root-nodemanager-node04.out

网页查看:yarn.resourcemanager.webapp.address

http://192.168.13.129:8088/cluster/nodes

(1)启动historyserver
sbin/mr-jobhistory-daemon.sh start historyserver
http://192.168.13.129:19888/jobhistory
四.安装Zookeeper
1.单个创建文件myid
hosts为www.ljt.cos01,www.ljt.cos02,www.ljt.cos03,node04,也可以是IP

[root@www.ljt.cos01 zookeeper-3.5.2-alpha]# cat myid
www.ljt.cos01 1
www.ljt.cos02 2
www.ljt.cos03 3
2.单个节点配置zoo.cfg

[root@www.ljt.cos01 conf]# cat zoo_sample.cfg

vi zoo.cfg

tickTime=2000
dataDir=/opt/apps/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=www.ljt.cos01:2888:3888
server.2=www.ljt.cos02:2888:3888
server.3=www.ljt.cos03:2888:3888

server.1,server.2,server.3,server.4和myid相匹配

3.4 复制和启动
3.Zookeeper复制到其他所有节点:
scp -r /opt/apps/zookeeper www.ljt.cos02:/app
scp -r /opt/apps/zookeeper www.ljt.cos03:/app
scp -r /opt/apps/zookeeper node04:/app

4.每个节点执行:
/opt/apps/zookeeper/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/apps/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper … STARTED

(1)状态:/opt/apps/zookeeper/bin/zkServer.sh status
Mode: leader
Mode: follower
5.报错处理
[root@www.ljt.cos01 logs]# cat zookeeper-root-server-www.ljt.cos01.out
2017-04-07 15:47:22,297 [myid:] - INFO [main:QuorumPeerConfig@116] - Reading configuration from: /opt/apps/zookeeper/bin/../conf/zoo.cfg
2017-04-07 15:47:22,304 [myid:] - INFO [main:QuorumPeerConfig@318] - clientPortAddress is 0.0.0.0/0.0.0.0:2181
2017-04-07 15:47:22,304 [myid:] - INFO [main:QuorumPeerConfig@322] - secureClientPort is not set
2017-04-07 15:47:22,311 [myid:] - ERROR [main:QuorumPeerMain@86] - Invalid config, exiting abnormally
org.apache.zookeeper.server.quorum.QuorumPeerConfigConfigException:Addressunresolved:www.ljt.cos01:3888atorg.apache.zookeeper.server.quorum.QuorumPeerConfigException: Address unresolved: www.ljt.cos01:3888 at org.apache.zookeeper.server.quorum.QuorumPeerQuorumServer.(QuorumPeer.java:242)
at org.apache.zookeeper.server.quorum.flexible.QuorumMaj.(QuorumMaj.java:89)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.createQuorumVerifier(QuorumPeerConfig.java:524)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseDynamicConfig(QuorumPeerConfig.java:557)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.setupQuorumPeerConfig(QuorumPeerConfig.java:530)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:353)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:133)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:110)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:79)

分析:这个报错原因是zoo.cfg配置文件,server.1=www.ljt.cos01:2888:3888后面有空格导致
五.安装HBASE
1.每个节点执行环境变量:
echo ‘export HBASE_HOME=/opt/apps/hbase1.2.6 ’ >> /etc/profile
echo ‘export PATH=PATH:PATH:HBASE_HOME/bin’ >> /etc/profile
source /etc/profile
2.配置hbase-env.sh
(1)
mkdir logs #Hbase日志目录

(2)
echo ‘export JAVA_HOME=/usr/local/jdk1.8.0_131’ >> conf/hbase-env.sh
echo ‘export HADOOP_HOME=/home/hadoop/hadoop2.7’>> conf/hbase-env.sh
echo ‘export HBASE_HOME=/opt/apps/hbase1.2.6’ >> conf/hbase-env.sh
echo ‘export HBASE_MANAGES_ZK=false’ >> conf/hbase-env.sh
echo ‘export HBASE_LOG_DIR=/opt/apps/hbase1.2.6/logs’ >> conf/hbase-env.sh
3.配置hbase-site.xml
(1)hbase.master.info.port指定了hbase web客户端的访问网址
(2)hbase.rootdir指定了在HDFS中的位置,根目录参考core-sit.xml的fs.default.name
(3)hbase.zookeeper相关属性参照zookeeper的配置:

hbase.rootdir
hdfs://www.ljt.cos01:9000/hbase

hbase.cluster.distributed
true

hbase.master
www.ljt.cos01:60000

hbase.zookeeper.property.dataDir
/opt/apps/zookeeper

hbase.zookeeper.quorum
www.ljt.cos01, www.ljt.cos02, www.ljt.cos03

hbase.zookeeper.property.clientPort
2181

hbase.master.info.port
60010

4.配置regionservers
[root@www.ljt.cos01 hbase-1.3.0]# cat conf/regionservers
www.ljt.cos02
www.ljt.cos03
node04
5.scp到各个节点:
6.启动
启动之前得保证ZK和hadoop已经启动
[master@master1 hbase]$ bin/start-hbase.sh
7.报错处理:
(1)hbase(main):006:0> t1 = create ‘t1’, ‘f1’
ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
(2)是四个节点时间不同步
处理:
[root@www.ljt.cos01 ~]# cat /etc/ntp.conf
restrict default nomodify
restrict 127.0.0.1
server 127.127.1.0
fudge 127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
broadcastdelay 0.008

[root@www.ljt.cos02 ~]# ntpdate www.ljt.cos01
7 Apr 16:51:55 ntpdate[14684]: step time server 192.168.85.129 offset -38.280736 sec
[root@www.ljt.cos03 ~]# ntpdate www.ljt.cos01
7 Apr 16:52:04 ntpdate[9019]: step time server 192.168.85.129 offset -40.609528 sec
[root@node04 ~]# ntpdate www.ljt.cos01
7 Apr 16:52:14 ntpdate[9042]: step time server 192.168.85.129 offset -38.668817 sec

六.安装HIVE
下载Hive安装包
可以从 Apache 其中一个镜像站点中下载最新稳定版的 Hive, apache-hive-2.1.1-bin.tar.gz。
解压安装Hive
使用以下命令安装 Hive:
sudo mv apache-hive-2.1.1-bin.tar.gz /opt
cd /opt
sudo tar -xzvf apache-hive-2.1.1-bin.tar.gz ##解压
sudo ln -s apache-hive-2.1.1-bin hive ##创建软链接
设置 Hive环境变量
编辑 .bash_profile 文件, 在其中添加以下内容:

Hive Env

export HIVE_HOME=/opt/hive
export PATH=PATH:PATH:HIVE_HOME/bin
使环境变量生效:
source .bash_profile


配置Hive
配置文件重命名
在运行 Hive 之前需要使用以下命令修改配置文件:
cd /opt/hive/conf
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
cp hive-log4j2.properties.template hive-log4j2.properties
cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties
修改hive-env.sh
因为 Hive 使用了 Hadoop, 需要在 hive-env.sh 文件中指定 Hadoop 安装路径:
export JAVA_HOME=/opt/java ##Java路径
export HADOOP_HOME=/opt/hadoop ##Hadoop安装路径
export HIVE_HOME=/opt/hive ##Hive安装路径
export HIVE_CONF_DIR=/opt/hive/conf ##Hive配置文件路径
创建HDFS目录
在 Hive 中创建表之前需要创建以下 HDFS 目录并给它们赋相应的权限。
hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -mkdir -p /user/hive/tmp
hdfs dfs -mkdir -p /user/hive/log
hdfs dfs -chmod g+w /user/hive/warehouse
hdfs dfs -chmod g+w /usr/hive/tmp
hdfs dfs -chmod g+w /usr/hive/log
修改hive-site.xml
将 hive-site.xml 文件中以下几个配置项的值设置成上一步中创建的几个路径。

hive.exec.scratchdir
/user/hive/tmp
HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: {hive.exec.scratchdir}/&lt;username&gt; is created, with{hive.exec.scratchdir}/<username> is created, with {hive.scratch.dir.permission}.

hive.metastore.warehouse.dir
/user/hive/warehouse
location of default database for the warehouse

hive.querylog.location
/user/hive/log
Location of Hive run time structured log file


Hive Metastore
默认情况下, Hive 的元数据保存在内嵌的 Derby 数据库里, 但一般情况下生产环境会使用 MySQL 来存放 Hive 元数据。
创建数据库和用户
假定你已经安装好 MySQL。下面创建一个 hive 数据库用来存储 Hive 元数据,且数据库访问的用户名和密码都为 hive。
mysql> CREATE DATABASE hive;
mysql> USE hive;
mysql> CREATE USER ‘hive’@’localhost’ IDENTIFIED BY ‘hive’;
mysql> GRANT ALL ON hive.* TO ‘hive’@’localhost’ IDENTIFIED BY ‘hive’;
mysql> GRANT ALL ON hive.* TO ‘hive’@’%’ IDENTIFIED BY ‘hive’;
mysql> FLUSH PRIVILEGES;
mysql> quit;
修改hive-site.xml
需要在 hive-site.xml 文件中配置 MySQL 数据库连接信息。

javax.jdo.option.ConnectionURL
jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false

javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver

javax.jdo.option.ConnectionUserName
hive

javax.jdo.option.ConnectionPassword
hive


运行Hive
在命令行运行 hive 命令时必须保证以下两点:
1. HDFS 已经启动。可以使用 start-dfs.sh 脚本来启动 HDFS。
2. MySQL Java 连接器添加到 $HIVE_HOME/lib 目录下。我安装时使用的是 mysql-connector-java-5.1.39.jar。
从 Hive 2.1 版本开始, 我们需要先运行 schematool 命令来执行初始化操作。
schematool -dbType mysql -initSchema
终端输出信息如下:

执行成功后,可以使用 Sequel Pro 查看元数据库 hive 是否已经创建成功。

要使用 Hive CLI(Hive command line interface), 可以在终端输入以下命令:
hive
启动信息如下:

使用 show tables 来显示所有的表:


问题总结
SSL问题
启动 hive 时,提示以下信息:
Sat May 21 10:25:12 CST 2016 WARN: Establishing SSL connection without server’s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL
connection must be established by default if explicit option isn’t set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to ‘false’. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
解决方法:在 hive-site.xml 配置文件中 javax.jdo.option.ConnectionURL 配置项的值上加上 useSSL=false。即最后的配置如下:

javax.jdo.option.ConnectionURL
jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false
JDBC connect string for a JDBC metastore

initSchema问题
启动 hive 时,提示以下信息:
Exception in thread “main” java.lang.RuntimeException: Hive metastore database is not initialized. Please use schematool (e.g. ./schematool -initSchema -dbType …) to create the schema. If needed, don’t forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for mysql)
解决方法:执行 schematool -initSchema -dbType mysql。即安装 Hive 后,在首次运行 hive 之前要执行以上命令。
相对路径问题
启动Hive时报以下错误:
Exception in thread “main”java.lang.RuntimeException: java.lang.IllegalArgumentException:java.net.URISyntaxException: Relative path in absolute URI:{system:java.io.tmpdir%7D/{system:java.io.tmpdir%7D/%7Bsystem:user.name%7D
atorg.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:444)
atorg.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:672)
atorg.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:616)
atsun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
atjava.lang.reflect.Method.invoke(Method.java:606)
atorg.apache.hadoop.util.RunJar.main(RunJar.java:160)
Caused by: java.lang.IllegalArgumentException:java.net.URISyntaxException: Relative path in absolute URI:{system:java.io.tmpdir%7D/{system:java.io.tmpdir%7D/%7Bsystem:user.name%7D
atorg.apache.hadoop.fs.Path.initialize(Path.java:148)
atorg.apache.hadoop.fs.Path.(Path.java:126)
atorg.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:487)
atorg.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:430)
… 7more
解决方案:将 hive-site.xml 中的 system:java.io.tmpdir和{system:java.io.tmpdir} 和 {system:user.name} 分别替换成 /tmp 和 user.namemysql−connector−java版本问题启动Hive时报以下错误:Exceptioninthread“main”java.lang.RuntimeException:org.apache.hadoop.hive.ql.metadata.HiveException:java.lang.RuntimeException:Unabletoinstantiateorg.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientatorg.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:578)atorg.apache.hadoop.hive.ql.session.SessionState.beginStart(SessionState.java:518)atorg.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:705)atorg.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:641)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)atjava.lang.reflect.Method.invoke(Method.java:498)atorg.apache.hadoop.util.RunJar.run(RunJar.java:221)atorg.apache.hadoop.util.RunJar.main(RunJar.java:136)Causedby:org.apache.hadoop.hive.ql.metadata.HiveException:java.lang.RuntimeException:Unabletoinstantiateorg.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientatorg.apache.hadoop.hive.ql.metadata.Hive.registerAllFunctionsOnce(Hive.java:226)atorg.apache.hadoop.hive.ql.metadata.Hive.(Hive.java:366)atorg.apache.hadoop.hive.ql.metadata.Hive.create(Hive.java:310)atorg.apache.hadoop.hive.ql.metadata.Hive.getInternal(Hive.java:290)atorg.apache.hadoop.hive.ql.metadata.Hive.get(Hive.java:266)atorg.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:545)…9moreCausedby:java.lang.RuntimeException:Unabletoinstantiateorg.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientatorg.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1627)atorg.apache.hadoop.hive.metastore.RetryingMetaStoreClient.(RetryingMetaStoreClient.java:80)atorg.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:130)atorg.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:101)atorg.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:3317)atorg.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:3356)atorg.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:3336)atorg.apache.hadoop.hive.ql.metadata.Hive.getAllFunctions(Hive.java:3590)atorg.apache.hadoop.hive.ql.metadata.Hive.reloadFunctions(Hive.java:236)atorg.apache.hadoop.hive.ql.metadata.Hive.registerAllFunctionsOnce(Hive.java:221)…14moreCausedby:java.lang.reflect.InvocationTargetExceptionatsun.reflect.NativeConstructorAccessorImpl.newInstance0(NativeMethod)atsun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)atsun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)atjava.lang.reflect.Constructor.newInstance(Constructor.java:423)atorg.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1625)…23moreCausedby:javax.jdo.JDODataStoreException:ExceptionthrownobtainingschemacolumninformationfromdatastoreNestedThrowables:java.sql.SQLException:ColumnnamepatterncannotbeNULLorempty.atorg.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:543)atorg.datanucleus.api.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:720)atorg.datanucleus.api.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceManager.java:740)atorg.apache.hadoop.hive.metastore.ObjectStore.setMetaStoreSchemaVersion(ObjectStore.java:7763)atorg.apache.hadoop.hive.metastore.ObjectStore.checkSchema(ObjectStore.java:7657)atorg.apache.hadoop.hive.metastore.ObjectStore.verifySchema(ObjectStore.java:7632)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)atjava.lang.reflect.Method.invoke(Method.java:498)atorg.apache.hadoop.hive.metastore.RawStoreProxy.invoke(RawStoreProxy.java:101)atcom.sun.proxy.{user.name} mysql-connector-java版本问题 启动Hive时报以下错误: Exception in thread “main” java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:578) at org.apache.hadoop.hive.ql.session.SessionState.beginStart(SessionState.java:518) at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:705) at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:641) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.util.RunJar.run(RunJar.java:221) at org.apache.hadoop.util.RunJar.main(RunJar.java:136) Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient at org.apache.hadoop.hive.ql.metadata.Hive.registerAllFunctionsOnce(Hive.java:226) at org.apache.hadoop.hive.ql.metadata.Hive.(Hive.java:366) at org.apache.hadoop.hive.ql.metadata.Hive.create(Hive.java:310) at org.apache.hadoop.hive.ql.metadata.Hive.getInternal(Hive.java:290) at org.apache.hadoop.hive.ql.metadata.Hive.get(Hive.java:266) at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:545) … 9 more Caused by: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1627) at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.(RetryingMetaStoreClient.java:80) at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:130) at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:101) at org.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:3317) at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:3356) at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:3336) at org.apache.hadoop.hive.ql.metadata.Hive.getAllFunctions(Hive.java:3590) at org.apache.hadoop.hive.ql.metadata.Hive.reloadFunctions(Hive.java:236) at org.apache.hadoop.hive.ql.metadata.Hive.registerAllFunctionsOnce(Hive.java:221) … 14 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1625) … 23 more Caused by: javax.jdo.JDODataStoreException: Exception thrown obtaining schema column information from datastore NestedThrowables: java.sql.SQLException: Column name pattern can not be NULL or empty. at org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:543) at org.datanucleus.api.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:720) at org.datanucleus.api.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceManager.java:740) at org.apache.hadoop.hive.metastore.ObjectStore.setMetaStoreSchemaVersion(ObjectStore.java:7763) at org.apache.hadoop.hive.metastore.ObjectStore.checkSchema(ObjectStore.java:7657) at org.apache.hadoop.hive.metastore.ObjectStore.verifySchema(ObjectStore.java:7632) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.hive.metastore.RawStoreProxy.invoke(RawStoreProxy.java:101) at com.sun.proxy.Proxy21.verifySchema(Unknown Source)
at org.apache.hadoop.hive.metastore.HiveMetaStoreHMSHandler.getMS(HiveMetaStore.java:547)atorg.apache.hadoop.hive.metastore.HiveMetaStoreHMSHandler.getMS(HiveMetaStore.java:547) at org.apache.hadoop.hive.metastore.HiveMetaStoreHMSHandler.createDefaultDB(HiveMetaStore.java:612)
at org.apache.hadoop.hive.metastore.HiveMetaStoreHMSHandler.init(HiveMetaStore.java:398)atorg.apache.hadoop.hive.metastore.RetryingHMSHandler.(RetryingHMSHandler.java:78)atorg.apache.hadoop.hive.metastore.RetryingHMSHandler.getProxy(RetryingHMSHandler.java:84)atorg.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:6396)atorg.apache.hadoop.hive.metastore.HiveMetaStoreClient.(HiveMetaStoreClient.java:236)atorg.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient.(SessionHiveMetaStoreClient.java:70)…28more解决方案:将HMSHandler.init(HiveMetaStore.java:398) at org.apache.hadoop.hive.metastore.RetryingHMSHandler.(RetryingHMSHandler.java:78) at org.apache.hadoop.hive.metastore.RetryingHMSHandler.getProxy(RetryingHMSHandler.java:84) at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:6396) at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.(HiveMetaStoreClient.java:236) at org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient.(SessionHiveMetaStoreClient.java:70) … 28 more 解决方案:将 HIVE_HOME/lib 下 的 mysql-connector-java-6.0.3.jar 替换成 mysql-connector-java-5.1.39.jar。 原因分析:mysql-connector-java 6.x 版本 和 5.1.x 版本不兼容 , nullNamePatternMatchesAll 连接属性的默认值在 mysql-connector-java 5.1 和 6.0 之间发生了改变. 在 5.1 版本中默认值是 true, 而 6.0 版本中默认值是 false。可以参考文章 https://liquibase.jira.com/browse/CORE-2723。

七.安装hive hwi
1.打包hive-hwi-2.1.1.war
[root@www.ljt.cos01 hwi]# pwd
/app/hive_src/apache-hive-2.1.1-src
jar cvfM0 hive-hwi-2.1.1.war -C web/ .
cp hive-hwi-2.1.1.war /app/apache-hive-2.1.1-bin/lib/
2.hive-site.xml中添加

hive.hwi.war.file
lib/hive-hwi-2.1.1.war
This sets the path to the HWI war file, relative to ${HIVE_HOME}.

hive.hwi.listen.host
www.ljt.cos01
This is the host address the Hive Web Interface will listen on

hive.hwi.listen.port
9999
This is the port the Hive Web Interface will listen on

3.启动和查看
[root@www.ljt.cos01 lib]# pwd
/app/apache-hive-2.1.1-bin/lib
[root@www.ljt.cos01 lib]# nohup hive –service hwi &

查看
http://www.ljt.cos01:9999/hwi/index.jsp
http://www.ljt.cos01:9999/hwi/index.jsp

八、Hive整合HBase原理
Hive与hbase整合的实现是利用两者本身对外的API接口互相通信来完成的,其具体工作交由Hive的lib目录中的hive-hbase-handler-*.jar工具类来实现,通信原理如下图所示。

Hive整合HBase后的使用场景:
(一)通过Hive把数据加载到HBase中,数据源可以是文件也可以是Hive中的表。
(二)通过整合,让HBase支持JOIN、GROUP等SQL查询语法。
(三)通过整合,不仅可完成HBase的数据实时查询,也可以使用Hive查询HBase中的数据完成复杂的数据分析
6 Hive整合HBase配置
Hive提供了与HBase的集成,使得能够在HBase表上使用HQL语句进行查询 插入操作以及进行Join和Union等复杂查询
应用场景
1. 将ETL操作的数据存入HBase

  1. HBase作为Hive的数据源

  2. 构建低延时的数据仓库

使用

6.1 Hive映射HBase表
// 如果hbase是集群,需要修改hive-site.xml文件配置
vimhive−site.xmlhbase.zookeeper.quorumwww.ljt.cos01,www.ljt.cos02,www.ljt.cos03//将hbaselib目录下的所有文件复制到hivelib目录中 vim hive-site.xml hbase.zookeeper.quorum www.ljt.cos01, www.ljt.cos02, www.ljt.cos03 // 将hbase lib目录下的所有文件复制到hive lib目录中 cd app/hive-1.1.0-cdh5.7.1/
cp /opt/apps/hbase1.2.6/lib/∗lib///在hive中创建映射表 cp ~/opt/apps/hbase1.2.6/lib/ * lib/ // 在hive中创建映射表 hive shell

create table hive_hbase_test(key int,value string) stored by ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’ with serdeproperties(“hbase.columns.mapping”=”:key,cf1:val”) tblproperties(“hbase.table.name”=”hive_hbase_test”);
备注:在hive中创建表hive_hbase_test,这个表包括两个字段(int型的key和string型的value),映射为hbase中的表hive_hbase_test,key对应hbase的rowkey,value对应hbase的cf1:val列。

2017-07-21 22:35:18,664 INFO [f99009cc-7153-4429-a88c-03ced8a7e4d7 main] client.ZooKeeperRegistry: ClusterId read in ZooKeeper is null
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:java.lang.RuntimeException: java.lang.NullPointerException
Caused by: java.lang.NullPointerException
at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.getMetaReplicaNodes(ZooKeeperWatcher.java:395)

// 在hbase中查看是否存在映射表
$ hbase shell

list

6.2 整合后功能测试
// 创建测试数据
$ vim poke.txt
1 zhangsan
2 lisi
3 wangwu

// 在hive中创建一个poke表并加载测试数据

create table poke(key int,valuestring) row format delimited fields terminated by ‘\t’;
load data local inpath’/home/developer/poke.txt’ overwrite into table poke;
select * from poke;

// 将hive的poke表中的数据加载到hive_hbase_test表

insert overwrite table hive_hbase_test select * from poke;
select * from hive_hbase_test;

// 查看hbase的hive_hbase_test表中是否有同样的数据

scan ‘hive_hbase_test’

需要说明以下几点:
(一)Hive映射表的字段是HBase表字段的子集。整合之后的Hive表不能被修改。
(二)Hive中的映射表不能直接插入数据,所以需要通过将数据加载到另一张poke表,然后通过查询poke表将数据加载到映射表。
(三)上述示例是通过创建内部表的方式将Hive表映射到HBase表,HBase表会自动创建,而且Hive表被删除后HBase表也会自动删除。
(四)如果HBase表已有数据,可以通过创建Hive外部表的方式将Hive表映射到HBase表,通过HQLHive表实现对HBase表的数据分析。Hive表删除将不会对HBase表造成影响。创建外部表的方法如下:

create external table hive_hbase_test(key int,value string)stored by ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’ with serdeproperties(“hbase.columns.mapping”=”:key,cf1:val”) tblproperties(“hbase.table.name”=”hive_hbase_test”);

启动hive
bin/hive


6.建表(默认是内部表)
create table trade_detail(id bigint, account string, income double, expenses double, time string) row format delimited fields terminated by ‘\t’;
建分区表
create table td_part(id bigint, account string, income double, expenses double, time string) partitioned by (logdate string) row format delimited fields terminated by ‘\t’;
建外部表
create external table td_ext(id bigint, account string, income double, expenses double, time string) row format delimited fields terminated by ‘\t’ location ‘/td_ext’;

7.创建分区表
普通表和分区表区别:有大量数据增加的需要建分区表
create table book (id bigint, name string) partitioned by (pubdate string) row format delimited fields terminated by ‘\t’;

分区表加载数据
load data local inpath './book.txt' overwrite into table book partition (pubdate='2010-08-22');load data local inpath '/root/data.am' into table beauty partition (nation="USA");select nation, avg(size) from beauties group by nation order by avg(size);

Hive整合hbase的数据流程
近期工作用到了Hive与Hbase的关系整合,虽然从网上参考了很多的资料,但是大多数讲的都不是很细,于是决定将这块知识点好好总结一下供大家分享,共同掌握!
本篇文章在具体介绍hive与hbase整合之前,先给大家用一个流程图介绍Hadoop业务的开发流程以及Hive与Hbase的整合在业务当中的必要性。

其中在数据存入hbase—>Hive对数据进行统计分析的这个步骤中就涉及到了Hive与Hbase的整合,所以了解Hive与Hbase的整合是很有必要的。
1、Hive与Hbase整合的必要性
Hive是建立在hadoop之上的数据仓库基础构架、是为了减少MapReduce编写工作的批处理系统,Hive本身不存储和计算数据,它完全依赖于HDFS和MapReduce。Hive可以理解为一个客户端工具,将我们的sql操作转换为相应的MapReduce jobs,然后在Hadoop上面运行。
Hbase全称为Hadoop Database,即Hbase是Hadoop的数据库,是一个分布式的存储系统。Hbase利用Hadoop的HDFS作为其文件存储系统,利用Hadoop的MapReduce来处理Hbase中的海量数据。利用zookeeper作为其协调工具。
Hbase数据库的缺点在于—-语法格式异类,没有类sql的查询方式,因此在实际的业务当中操作和计算数据非常不方便,但是Hive就不一样了,Hive支持标准的sql语法,于是我们就希望通过Hive这个客户端工具对Hbase中的数据进行操作与查询,进行相应的数据挖掘,这就是所谓Hive与hbase整合的含义。Hive与Hbase整合的示意图如下:

2、Hive与Hbase整合—-Hive绑定Hbase中的table
在Hive与Hbase整合的过程中,核心的步骤就是通过Hive绑定Hbase中的table表,绑定完之后,我们就可以通过Hive这个客户端工具对Hbase中的表进行查询了,那么如何进行绑定呢?—-关键在于Hbase中的table如何和hive中建立的table在column级别上建立映射关系。
假设现在在Hbase中有一张表:hbasetable,其数据模型如下:

对于这张表hbasetable,我们在Hive中建立的对应的数据模型如下:

其实从两者的数据模型上来看建立column上的映射关系应该不是一件很难的事情,事实上确实不是很难,相应语法如下:
create external table hivetable(rowkey string, column1 string,column2 string,column3 string)
stored by ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’
with serdeproperties(“hbase.columns.mapping” = “:key,columnfamily1:column1,columnfamily1:column2,columnfamily2:column3”)
tblproperties(“hbase.table.name”=”hbasetable”);
语法具体含义:
上面这个建表语句表示在Hive中建立一个外部表—名字叫做hivetable,与其在Hbase中建立映射关系的表名字为hbasetable,映射关系如下:
hivetable —————————————hbasetable
rowkey<—————>key (Hive中的rowkey字段关联到Hbase中的行健key)
column1<————–>columnfamily1:column1 (hivetable中的column1映射到hbasetable中columnfamily1上的column1字段)
column2<————–>columnfamily1:column2 (hivetable中的column2映射到hbasetable中columnfamily1上的column2字段)
column3<————–>columnfamily2:column3 (hivetable中的column3映射到hbasetable中columnfamily2上的column3字段)
stored by ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’ 的含义是:Hive与Hbase整合功能(互相通信)的实现主要是通过hive_hbase-handler.jar这个工具类来完成的,而语法中的HBaseStorageHandler指的就是这个工具类。


下面用一个具体的实例来说明如何通过Hive来绑定Hbase中的table:
首先我们先在Hbase中建立一个表:customer–其数据模型以及内容如下:

创建完表之后核实一下customer表中的内容,看是否创建成功:
hbase(main):001:0> scan ‘customer’
ROW COLUMN+CELL
xiaoming column=address:city, timestamp=1465142056815, value=hangzhou
xiaoming column=address:country, timestamp=1465142078267, value=china
xiaoming column=address:province, timestamp=1465142041784, value=zhejiang
xiaoming column=info:age, timestamp=1465142102017, value=24
xiaoming column=info:company, timestamp=1465142114558, value=baidu
zhangyifei column=address:city, timestamp=1465142154995, value=shenzhen
zhangyifei column=address:country, timestamp=1465142167587, value=china
zhangyifei column=address:province, timestamp=1465142138872, value=guangdong
zhangyifei column=info:age, timestamp=1465142183538, value=28
zhangyifei column=info:company, timestamp=1465142200569, value=alibaba
2 row(s) in 0.7090 seconds
接着我们根据上面的语法在hive中建立对应的表hive_customer,语法实现如下:
hive> create external table hive_customer(rowkey string, city string,country string,province string,age string,company string)

stored by ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’
with serdeproperties(“hbase.columns.mapping” = “:key,address:city,address:country,address:province,info:age,info:company”)
tblproperties(“hbase.table.name”=”customer”);
通过上面的语法我们就可以在hive中建立对应的表hive_customer了,现在我们查看一下表结构:
hive> describe hive_customer;
OK
rowkey string from deserializer
city string from deserializer
country string from deserializer
province string from deserializer
age string from deserializer
company string from deserializer
Time taken: 0.068 seconds
即:

从上面的这个表结构可以看出,在hive表与hbase表整合的过程中,无非就是建立一个映射关系而已。
现在我们在hive中查看一下hive_customer表的内容:

很明显,hive中表的内容和我们预期想的是一样的,上面这个sql操作由于是全表操作,并没有走MapReduce程序,下面我们实现一个走MapReduce程序的sql操作:
查询hive_customer表中xiaoming的相关信息:
执行操作:
hive> select * from hive_customer

where rowkey=”xiaoming”;
然而hive的运行结果并没有我们像的这么顺利,抛出了下面的异常:

这是为什么呢?—其实对于这个问题也是一个经验的总结,下面将进入我们博客的第三个部分。
3、如何处理异常—–从而使hive与hbase能够顺利的进行相互访问
有必要先介绍一下本次实验的运行环境:
hadoop-1.1.2 (单点部署)
hbase-0.94.7-security (单点部署)
hive-0.9.0 (MetaStore 配置为MySQL数据库)
注:下面的方法对于集群来说同样适用!
解决步骤:
①查看异常中的路径(即异常的URL地址)
http://hadoop80:50060/tasklog?taskid=attempt_201606042144_0002_m_000000_3&start=-8193
将其修改为:
http://hadoop80:50060/tasklog?
attemptid=attempt_201606042144_0002_m_000000_3&start=-8193
然后在网页中查看异常的具体情况:

②从页面的提示:Caused by: Java.lang.ClassNotFoundException: org.apache.hadoop.hive.hbase.HBaseSplit 可以看出明显是缺少某个jar包,这个jar包到底是什么呢?
③这几个jar包分别是:
zookeeper-3.4.5.jar
hbase-0.94.7-security.jar
hbase-0.94.7-security-tests.jar
protobuf-java-2.4.0a.jar
注意:上面这几个jar包指的是hbase(hbase-0.94.7-security )本身自带的几个jar包,然后将这4个jar包拷贝到hive/lib的目录下(注意:如果在hive/lib的目录下已经存在这几个文件的其他版本(例如hbase-0.92.0.jar、hbase-0.92.0-tests.jar、zookeeper-3.4.3.jar—先将hive自带的这几个版本删除掉,然后在拷贝hbase下的相关版本)
④在hive/conf的hive-site.xml文件中,添加如下内容:

hive.aux.jars.path
file:///usr/local/hive/lib/zookeeper-3.4.5.jar,file:///usr/local/hive/lib/hbase-0.94.7-security.jar,file:///usr/local/hive/lib/hbase-0.94.7-security-tests.jar,file:///usr/local/hive/lib/protobuf-java-2.4.0a.jar,file:///usr/local/hive/lib/hive-hbase-handler-0.9.0.jar

注意:通过上面的这几行配置文件,可以加载Hive默认没有加载的这4个jar包(zookeeper-3.4.5.jar、
hbase-0.94.7-security.jar、hbase-0.94.7-security-tests.jar、protobuf-java-2.4.0a.jar),但是在这里我有一点一直没有搞懂:hive-hbase-handler-0.9.0.jar这个jar包在hive中默认已经添加了,但是我们在编写配置文件的时候还必须写上,否则业务开发中就会出错–如果有知道这个原因的博友,欢迎留言。
⑤拷贝zookeeper-3.4.5.jar、hbase-0.94.7-security.jar、hbase-0.94.7-security-tests.jar、protobuf-java-2.4.0a.jar这四个jar包到所有hadoop节点的lib目录下(我本次实验的时候用的是单点,所以就拷贝一个)。
⑥拷贝hbase/conf下的hbase-site.xml文件到所有hadoop节点conf目录下。
⑦重启hadoop、hbase、hive。
经过上面7个详细的步骤,这个异常问题我们就彻底解决了,下面我们在重新执行一下业务:
查询hive_customer表中xiaoming的相关信息:
操作:

OK!到这里我们就顺利的获取到了我们希望的结果了!

完全分布式安装Hadoop,Hive,Hbase,Hwi,Zookeeper相关推荐

  1. 配置密码分布式集群环境hadoop、hbase、zookeeper搭建(全)

    新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 1.环境说明 群集环境少至要需3个节点(也就是3台服务器设备):1个Master,2个Slave,节点之间局域网连接,可以互相pin ...

  2. oracle+olh+hive,hadoop+hive+hbase的简单安装 | YallonKing

    hadoop+hive+hbase的简单安装 hadoop.hive.hbase下载地址:http://mirror.bit.edu.cn/apache/ (一)hadoop安装: 解压hadoop- ...

  3. hadoop hive hbase 入门学习 (二)

    hadoop 自学系列                hadoop hive hbase 入门学习 (一) hadoop安装.hdfs学习及mapreduce学习 hadoop 软件下载 (hadoo ...

  4. Linux伪分布式安装Hadoop

    Linux伪分布式安装Hadoop 1. 更新软件列表 hadoop@jeff:~$ sudo apt update 2. 安装vim编辑器 hadoop@jeff:/home/jeff$ sudo ...

  5. hadoop hive hbase 集群搭建

    摘要:去年开发BI系统,其中ETL用到了Hadoop和Hive,我用三台Dell服务器,搭建了一个Hadoop集群,用于开发测试. 在接下来的几篇中,我会介绍些BI架构设计的内容,以及在开发中遇到的困 ...

  6. zookeeper清空hbase_Ambari 管理hadoop、hbase、zookeeper节点

    简介: Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的供应.管理和监控.Ambari已支持大多数Hadoop组件,包括HDFS.MapReduce.Hive.P ...

  7. 4台机器完全分布式安装hadoop,bigbrother的补充

    完全分布式 示意图 Namnode的配置 克隆机器 1, 克隆,改名 2, 该udev文件 /etc/udev/rules.d/70---net- 把最后一行的eth1改为eth0,把前面几行都注释掉 ...

  8. hadoop(1):centos 安装 hadoop hive

    1,关于hive Hive是一个基于Hadoop的数据仓库平台.通过hive,我们可以方便地进行ETL的工作.hive定义了一个类似于SQL的查询语言:HQL,能 够将用户编写的QL转化为相应的Map ...

  9. hadoop/hive/hbase 简单区别及应用场景

    1.hadoop:它是一个分布式计算+分布式文件系统,前者其实就是MapReduce,后者是HDFS.后者可以独立运行,前者可以选择性使用,也可以不使用 2.hive:通俗的说是一个数据仓库,仓库中的 ...

  10. hadoop+hive+hbase+spark补充内容

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 Linux安装Scala步骤 一.下载Scala安装包 从scala官方网站地址:http://www.scala-lang.org/download ...

最新文章

  1. javascript 深度克隆对象
  2. Ajax 基础——未完待续
  3. 和49支战队瓜分600万奖金,这场史上奖金最多的AI大赛到底比什么?
  4. 【Python】交互式界面创建函数
  5. 动态规划经典题之年终奖
  6. VC6.0 +WDK 开发驱动的环境配置
  7. C# 使用Bitmap类进行图片裁剪
  8. 谷粒商城基础篇爬坑笔记--项目导入intellij IDEA后pom.xml无法识别为maven文件和程序包import com.atguigu.common.XXX不存在两个问题解决方法
  9. IOS开发-我的第一个IOS程序
  10. 【学术】论文读不懂怎么办?
  11. Android 之 网络连接(Connecting to the Network)
  12. Android中View的绘制过程 onMeasure方法简述 附有自定义View例子
  13. java内嵌浏览器的几种方式
  14. oracle密码已过期问题解决
  15. 经济学入门书籍选择参考(业余爱好者)
  16. android 常用action和category
  17. XDOC 在线word文档表格预览
  18. 2019届华为秋招数字芯片面试经验
  19. Word2007 表格换页自动“续表”方法
  20. AMBA总线协议之AHB学习记录(1)—ahb_bus(附verilog代码)

热门文章

  1. EventBus BackgroundPoster原理解析
  2. mysql5.7.28升级到5.7.29_MySQL升级5.7.29
  3. Android仿58同城Loading View
  4. Python的学习必备基础知识总结
  5. html盒子中盒子排列,解析CSS的box model盒模型及其内的子元素布局控制
  6. android 相机功能修改,安卓用户又少了一项自由,Android 11不再支持更改默认相机程序...
  7. python魔法属性_python魔法方法-属性转换和类的表示详解
  8. 列举计算机组装所需的各个硬件,计算机组装和维修期中考试.doc
  9. dch中mysql作用_解析Cloudera Manager内部结构、功能包括配置文件、目录位置等
  10. java读取手机崩溃日志_Android抓取崩溃日志