时间:2021-07-01 10:21:17 帮助过:2人阅读
l 主机操作系统:Windows 64位,双核4线程,主频2.2G,10G内存
l 虚拟软件:VMware® Workstation 9.0.0 build-812388
l 虚拟机操作系统:CentOS6.5 64位,单核
l 虚拟机运行环境:
Ø JDK:1.7.0_55 64位
Ø Hadoop:2.2.0(需要编译为64位)
Ø Scala:2.10.4
Ø Spark:1.1.0(需要编译)
Ø Hive:0.13.1(源代码编译,参见1.2)
本次实验环境只需要hadoop1一台机器即可,网络环境配置如下:
序号 |
IP地址 |
机器名 |
类型 |
用户名 |
目录 |
1 |
192.168.0.61 |
hadoop1 |
NN/DN |
hadoop |
/app 程序所在路径 /app/scala-... /app/hadoop /app/complied |
这里选择下载的版本为hive-0.13.1,这个版本需要到apache的归档服务器下载,下载地址:http://archive.apache.org/dist/hive/hive-0.13.1/,选择apache-hive-0.13.1-src.tar.gz文件进行下载:
把下载的hive-0.13.0.tar.gz安装包,使用SSH Secure File Transfer工具(参见第2课《Spark编译与部署(上)--基础环境搭建》1.3.1介绍)上传到/home/hadoop/upload 目录下。
到上传目录下,用如下命令解压缩hive安装文件:
$cd /home/hadoop/upload
$tar -zxf apache-hive-0.13.1-src.tar.gz
改名并移动到/app/complied目录下:
$sudo mv apache-hive-0.13.1-src /app/complied/hive-0.13.1-src
$ll /app/complied
编译Hive源代码的时候,需要从网上下载依赖包,所以整个编译过程机器必须保证在联网状态。编译执行如下脚本:
$cd /app/complied/hive-0.13.1-src/
$export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"
$mvn -Phadoop-2,dist -Dmaven.test.skip=true clean package
在编译过程中可能出现速度慢或者中断,可以再次启动编译,编译程序会在上次的编译中断处继续进行编译,整个编译过程耗时与网速紧密相关,网速较快的情况需要1个小时左右(上图的时间是多次编译后最后成功的界面)。最终编译的结果为$HIVE_HOME/packaging/target/apache-hive-0.13.1-bin.tar.gz
通过如下命令查看最终编译完成整个目录大小,可以看到大小为353.6M左右
$du -s /app/complied/hive-0.13.1-src
【注】已经编译好的Hive包在本系列配套资源/install/6.hive-0.13.1-src.tar.gz,读者直接使用
由于首次运行hive-console需要在Spark源代码进行编译,关于Spark源代码的获取可以参考第二课《Spark编译与部署(下)--Spark编译安装》方式进行获取,连接地址为 http://spark.apache.org/downloads.html,获取源代码后把Spark源代码移动到/app/complied目录,并命名为spark-1.1.0-hive
第一步 使用如下命令打开/etc/profile文件:
$sudo vi /etc/profile
第二步 设置如下参数:
export HADOOP_HOME=/app/hadoop/hadoop-2.2.0
export HIVE_HOME=/app/complied/hive-0.13.1-src
export HIVE_DEV_HOME=/app/complied/hive-0.13.1-src
第三步 生效配置并验证
$sudo vi /etc/profile
$echo $HIVE_DEV_HOME
运行hive/console不需要启动Spark,需要进入到Spark根目录下使用sbt/sbt hive/console进行首次运行编译,编译以后下次可以直接启动。编译Spark源代码的时候,需要从网上下载依赖包,所以整个编译过程机器必须保证在联网状态。编译命令如下:
$cd /app/complied/spark-1.1.0-hive
$sbt/sbt hive/console
编译时间会很长,在编译过程中可能出现速度慢或者中断,可以再次启动编译,编译程序会在上次的编译中断处继续进行编译,整个编译过程耗时与网速紧密相关。
通过如下命令查看最终编译完成整个目录大小,可以看到大小为267.9M左右
$du -s /app/complied/spark-1.1.0-hive
【注】已经编译好的Spark for hive-console包在本系列配套资源/install/6.spark-1.1.0-hive.tar.gz,可直接使用
进入到spark根目录下,使用如下命令启动hive-console
$cd /app/complied/spark-1.1.0-hive
$sbt/sbt hive/console
可以使用:help查看帮助内容
scala>:help
可以使用tab键查看所有可使用命令、函数
首先定义Person类,在该类中定义name、age和state三个列,然后把该类注册为people表并装载数据,最后通过查询到数据存放到query中
scala>case class Person(name:String, age:Int, state:String)
scala>sparkContext.parallelize(Person("Michael",29,"CA")::Person("Andy",30,"NY")::Person("Justin",19,"CA")::Person("Justin",25,"CA")::Nil).registerTempTable("people")
scala>val query= sql("select * from people")
scala>query.printSchema
scala>query.collect()
scala>query.queryExecution
scala>query.queryExecution.logical
scala>query.queryExecution.analyzed
scala>query.queryExecution.optimizedPlan
scala>query.queryExecution.sparkPlan
scala>query.toDebugString