Spark 安装配置实验

本文详细介绍了Hadoop 2.7.2、Hive 2.0.0和Spark 1.6.0的安装与配置过程,并通过实践展示了如何在YARN环境下成功启动集群。此外,还演示了使用Spark SQL查询Hive数据,并提供了与Hive版本兼容性的注意事项。最后,通过实际操作验证了Spark在大数据处理上的高效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

安装 spark

1. 下载 spark 安装包

2. 解压缩

3. 建立软连接

4. 配置环境变量

5. 建立 spark-env.sh

6. 配置 slaves

8. 配置 yarn

9. 启动集群

10. 启动完成后,查看主、从机的进程和 spark 的 UI

11. 测试

参考:


        hadoop 2.7.2 安装,参考:Hadoop 集群安装配置实验

        hive 2.0.0 安装,参考:hive 安装配置实验

        hive 2.0.0 初始化需要执行下面的命令:

$HIVE_HOME/bin/schematool -initSchema -dbType mysql -userName=root -passowrd=new_password

        否则执行 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)

安装 spark

1. 下载 spark 安装包

        地址:Downloads | Apache Spark,下载页面如图1 所示:

图1

        如果要用 sparksql 查询 hive 的数据,一定要注意 spark 和 hive 的版本兼容性问题,在 hive 源码包的 pom.xml 文件中可以找到匹配的 spark 版本。

2. 解压缩

tar -zxvf spark-1.6.0-bin-hadoop2.6.tgz

3. 建立软连接

ln -s spark-1.6.0-bin-hadoop2.6 spark

4. 配置环境变量

vi /etc/profile.d/spark.sh
# 增加如下两行
export SPARK_HOME=/home/grid/spark-1.6.0-bin-hadoop2.6
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

5. 建立 spark-env.sh

cd /home/grid/spark/conf/
cp spark-env.sh.template spark-env.sh
vi spark-env.sh
# 增加如下配置
export JAVA_HOME=/home/grid/jdk1.7.0_75
export HADOOP_HOME=/home/grid/hadoop-2.7.2
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_HOME=/home/grid/spark-1.6.0-bin-hadoop2.6
SPARK_MASTER_IP=master
SPARK_LOCAL_DIRS=/home/grid/spark
SPARK_DRIVER_MEMORY=1G

6. 配置 slaves

cd /home/grid/spark/conf/
vi slaves
# 增加如下两行
slave1
slave2

7. 将配置好的 spark-1.6.0-bin-hadoop2.6 文件远程拷贝到相对应的从机中

scp -r spark-1.6.0-bin-hadoop2.6 slave1:/home/grid/
scp -r spark-1.6.0-bin-hadoop2.6 slave2:/home/grid/

8. 配置 yarn

vi /home/grid/hadoop-2.7.2/etc/hadoop/yarn-site.xml
# 修改如下属性
<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>2048</value>
</property>

9. 启动集群

# 启动dfs
start-dfs.sh
# 启动yarn
start-yarn.sh
# 启动spark
$SPARK_HOME/sbin/start-all.sh

10. 启动完成后,查看主、从机的进程和 spark 的 UI

        分别如图2、图3、图4 所示:

图2

图3

http://192.168.17.210:8080/

图4

11. 测试

# 把一个本地文本文件放到 hdfs,命名为 input
hadoop fs -put /home/grid/hadoop-2.7.2/README.txt input
# 登录 spark 的 Master 节点,进入 sparkshell
cd $SPARK_HOME/bin
./spark-shell 
# 运行 wordcount
val file=sc.textFile("hdfs://master:9000/user/grid/input") 
val count=file.flatMap(line => line.split(" ")).map(word => (word,1)).reduceByKey(_+_)
count.collect()

        上面三条命令的执行分别如图5、图6、图7 所示:

图5

图6

图7

        测试 SparkSQL。在 $SPARK_HOME/conf 目录下创建 hive-site.xml 文件,然后在该配置文件中,添加 hive.metastore.uris 属性,具体如下:

<configuration> 
  <property>
    <name>hive.metastore.uris</name>
    <value>thrift://master:9083</value>
    <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
  </property>
</configuration>

        启动 hive metastore 服务:

hive --service metastore > /tmp/grid/hive_metastore.log 2>&1 &

        启动 SparkSQL CLI:

spark-sql --master spark://master:7077 --executor-memory 1g

        这时就可以使用 HQL 语句对 Hive 数据进行查询:

show databases;
create table test;
use test;
create table t1 (name string);
load data local inpath '/home/grid/a.txt' into table t1;
select * from t1;
select count(*) from t1;
drop table t1;

        SQL 执行如图8 所示:

图8

        做了一个简单的对比测试,300G 数据时,sparksql 比 hive 快近三倍,3T 数据时,sparksql 比 hive 快 7. 5倍。

参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值