linux搭建hive on spark环境(spark-1.6.3-without-hive+hadoop2.8.0+hive2.1.1)
时间: 2023-05-31 16:20:56 浏览: 81
### 回答1:
要在Linux上搭建Hive on Spark环境,需要以下步骤:
1. 安装Hadoop和Spark
首先需要安装Hadoop和Spark,可以选择Hadoop 2.8.0和Spark 1.6.3版本。安装过程可以参考官方文档。
2. 安装Hive
安装Hive需要下载Hive 2.1.1版本,并解压到指定目录。然后需要配置Hive的环境变量,将Hive的bin目录添加到PATH中。
3. 配置Hive on Spark
在Hive的conf目录下,需要创建hive-site.xml文件,并添加以下配置:
```
<property>
<name>hive.execution.engine</name>
<value>spark</value>
</property>
<property>
<name>spark.master</name>
<value>local[*]</value>
</property>
<property>
<name>spark.submit.deployMode</name>
<value>client</value>
</property>
<property>
<name>spark.executor.memory</name>
<value>1g</value>
</property>
```
其中,hive.execution.engine配置为spark,spark.master配置为local[*],表示使用本地模式运行Spark。spark.submit.deployMode配置为client,表示以客户端模式提交Spark任务。spark.executor.memory配置为1g,表示每个executor的内存为1GB。
4. 启动Spark和Hive
启动Spark和Hive需要分别执行以下命令:
```
$SPARK_HOME/sbin/start-all.sh
$HIVE_HOME/bin/hive
```
其中,$SPARK_HOME和$HIVE_HOME分别为Spark和Hive的安装目录。
5. 测试Hive on Spark
在Hive命令行中,可以执行以下命令测试Hive on Spark:
```
hive> set hive.execution.engine=spark;
hive> select count(*) from table_name;
```
其中,table_name为需要查询的表名。如果查询结果正确,则说明Hive on Spark环境搭建成功。
### 回答2:
Hadoop是一个开源的分布式文件系统和计算框架,在大数据领域中应用广泛,而Hive则是基于Hadoop的数据仓库系统,通过将数据存储在Hadoop中,并使用类SQL的语言查询和分析数据。但是,Hive的执行速度很慢,而Spark是速度很快的内存计算框架,能够比Hadoop更快地处理大数据。因此,用户可以使用Hive on Spark来加速Hive查询。
要在Linux上搭建Hive on Spark环境, 需要按照以下步骤进行操作:
1. 下载并安装Hadoop:在官方网站上下载Hadoop的最新版本,然后解压和配置。
2. 下载并安装Spark:在官方网站上下载Spark的最新版本,然后解压和配置。
3. 下载并安装Hive:在官方网站上下载Hive的最新版本,然后解压和配置。
4. 配置环境变量:在.bashrc或.bash_profile中添加Hadoop和Spark的路径,并运行source命令使其生效。
5. 启动Hadoop集群:运行start-all.sh脚本启动Hadoop集群,可以通过jps命令检查集群是否正常运行。
6. 启动Spark:运行spark-shell来启动Spark,可以通过测试程序检查Spark是否正常运行。
7. 启动Hive:运行hive命令来启动Hive,可以通过测试程序测试Hive是否正常运行。
8. 配置Hive on Spark:在hive-site.xml文件中添加以下变量来配置Hive on Spark:
hive.execution.engine=spark
hive.spark.client.server.connect.timeout=600
hive.spark.client.connect.timeout=600
9. 验证Hive on Spark:运行一些查询来验证Hive on Spark是否正常运行,并通过Spark网页界面查看运行情况。
总之,搭建Hive on Spark环境需要仔细地完成操作,按照步骤进行操作,将会帮助你更快更有效地处理大数据。
### 回答3:
首先,在准备搭建 Hive on Spark 环境之前,我们需要确保已经安装了 Java JDK 、Hadoop 和 Spark 环境。在此基础上,按照以下步骤完成 Hive on Spark 的搭建:
1. 下载Hive
在 Apache Hive 的官网上可以下载到需要的版本,我们这里选择 hive-2.1.1 版本,下载后解压。
2. 配置Hadoop环境变量
在 ~/.bashrc 中添加如下内容:
export HADOOP_HOME=/your/path/to/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
保存文件,并使用 source ~/.bashrc 命令来使环境变量立即生效。
3. 配置Hive环境变量
在 ~/.bashrc 中添加如下内容:
export HIVE_HOME=/your/path/to/hive
export PATH=$PATH:$HIVE_HOME/bin
保存文件,并使用 source ~/.bashrc 命令来使环境变量立即生效。
4. 配置Spark环境变量
在 ~/.bashrc 中添加如下内容:
export SPARK_HOME=/your/path/to/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
保存文件,并使用 source ~/.bashrc 命令来使环境变量立即生效。
5. 配置Hive的hive-site.xml文件
将 $HIVE_HOME/conf 目录下的 hive-default.xml.template 文件复制一份并命名为 hive-site.xml,然后根据需要进行修改。在 hive-site.xml 中添加以下内容:
```
<property>
<name>spark.master</name>
<value>spark://<SPARK_MASTER_HOST>:<SPARK_MASTER_PORT></value>
<description>URL of the Spark Master</description>
</property>
<property>
<name>spark.submit.deployMode</name>
<value>client</value>
<description>Whether to run Spark in client or cluster mode</description>
</property>
<property>
<name>hive.execution.engine</name>
<value>spark</value>
<description>Execution engine</description>
</property>
<property>
<name>hive.spark.client.connect.timeout</name>
<value>300s</value>
</property>
```
注意,其中的 <SPARK_MASTER_HOST> 和 <SPARK_MASTER_PORT> 分别应该替换为实际使用的 Spark Master 的地址和端口。
6. 配置Spark的spark-defaults.conf文件
将 $SPARK_HOME/conf 目录下的 spark-defaults.conf.template 文件复制一份并命名为 spark-defaults.conf,然后根据需要进行修改。在 spark-defaults.conf 中添加以下内容:
```
spark.executor.memory 4g
spark.driver.memory 2g
spark.sql.shuffle.partitions 200
```
根据需要调整默认的内存大小(如果已经分配过多可能会导致OOM),设置适当的partition数(避免执行时的数据倾斜问题)。
7. 启动Hive服务
执行启动Hive的命令:
```
hive --service metastore &
hive
```
需要注意的是,需要先启动 metastore 服务,然后才能启动 Hive 客户端。
8. 准备测试数据
接下来,为了测试 Hive on Spark 的功能,可以使用 Hive 提供的测试数据集来进行测试。
将 https://github.com/facebookarchive/facebook-360-spatial-workstation.git 克隆到本地,进入 samples 文件夹,执行以下命令来生成哈希表:
```
beeline -n hadoop -d org.apache.hive.jdbc.HiveDriver \
-jdbc:hive2://localhost:10000 \
-e "CREATE TABLE h3 (id int, lat double, lon double, geog string) \
ROW FORMAT DELIMITED \
FIELDS TERMINATED BY ',' \
LINES TERMINATED BY '\n' \
STORED AS TEXTFILE;"
cd h3/
/data/gdal/gdal-2.2.0/bin/ogr2ogr -f CSV GEOM{FID}H3v11.csv geohash-cells.geojson -lco COMPRESS=DEFLATE
beeline -n hadoop -d org.apache.hive.jdbc.HiveDriver \
-jdbc:hive2://localhost:10000 \
-e "LOAD DATA LOCAL INPATH '/h3/GEOMFIDH3v11.csv' INTO TABLE h3;"
```
在以上命令中,我们使用了 beeline 来连接到 Hive 服务器,并使用 ogr2ogr 工具读取 geojson 文件并转存为 CSV 文件后导入到 Hive 中。
9. 执行Spark SQL查询
接下来可以使用 Spark SQL 来查询 Hive 中的数据。
运行 Spark Shell:
```
$SPARK_HOME/bin/spark-shell --master spark://<SPARK_MASTER_HOST>:<SPARK_MASTER_PORT> \
--jars $HIVE_HOME/lib/hive-exec-<HIVE_VERSION>.jar,$HIVE_HOME/lib/hive-metastore-<HIVE_VERSION>.jar
```
如果以上命令运行正常,将会进入 Spark Shell 中。
在 Shell 中运行如下代码:
```
import org.apache.spark.sql._
val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
hiveContext.setConf("hive.metastore.uris","thrift://<IP_ADDRESS>:9083")
hiveContext.sql("use default")
hiveContext.sql("show databases").foreach(println)
hiveContext.sql("select count(*) from h3").foreach(println)
```
其中,<IP_ADDRESS> 应该替换为实际使用的 Thrift 服务器的 IP 地址。
10. 结束Spark SQL查询
完成测试后,可以使用以下命令退出 Spark Shell:
```
scala> :q
```
至此,Hive on Spark 环境已经搭建完成。
相关推荐
















