大数据单机部署-spark+scala(hue集成spark)

修改环境 /etc/profile

export SCALA_HOME=/usr/local/scala
export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:$PATH

export SPARK_HOME=/usr/local/spark
export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:$PATH
export PATH=${SPARK_HOME}/bin:$PATH

#livy环境
export LIVY_HOME=/usr/local/livy
export PATH=$PATH:$LIVY_HOME/bin


#python环境
#export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.7-src.zip:$PYTHONPATH
#export PYSPARK_PYTHON=python3
#export PYSPARK_ALLOW_INSECURE_GATEWAY=1



#anaconda3环境
export ANACONDA_ROOT=/home/hadoop/anaconda3
export PYSPARK_DRIVER=$ANACONDA_ROOT/bin/ipython notebook
export PYSPARK_PYTHON=$ANACONDA_ROOT/bin/python 
export PYSPARK_DRIVER_PYTHON_OPTS="notebook"
export PATH=/home/hadoop/anaconda3/bin:$PATH

#环境生效
source /etc/profile

版本:

scala-2.12.8.tgz,spark-2.4.3-bin-hadoop2.7.tgz

1.进入所在的目录,解压移动

解压移动:

#scala解压安装
tar -zxvf scala-2.12.8.tgz
sudo mv  scala-2.12.8  /usr/local/scala
#按照前文配置好环境,此时直接在终端输入 scala 就会进入scala的交互模式
#spark解压安装
tar -zxvf spark-2.4.3-bin-hadoop2.7.tgz
sudo mv  /usr/local/spark

2.配置 /usr/local/spark/conf/spark-env.sh

加入如下内容:

export SCALA_HOME=/usr/local/scala
export JAVA_HOME=/usr/local/java
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export SPARK_HOME=/usr/local/spark


#直接写ip,写hostname网页web返回master失败
export SPARK_MASTER_HOST=192.168.1.111    
export SPARK_MASTER_IP=192.168.1.111 
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
export SPARK_EXECUTOR_MEMORY=2G
export SPARK_LOCAL_IP=192.168.1.111 
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native
export PYSPARK_ALLOW_INSECURE_GATEWAY=1

3.修改slaves

在conf目录下,修改slaves文件,如果没有 slaves 该文件,就复制slaves .template文件并重命名为slaves 。
修改这个新建的slaves 文件,加入配置:

#本机的hostname
master

4.配置 spark-defaults.conf

spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://192.168.1.111:9000/tmp/spark-events
spark.eventLog.compress          true
spark.serializer                 org.apache.spark.serializer.KryoSerializer
spark.master                    yarn 
spark.driver.cores              1

#spark.driver.memory  调太大,会导致yarn资源不够分配,应用一直accepted状态
spark.driver.memory             2g

spark.executor.cores            1
spark.executor.memory           1g
spark.executor.instances        1
spark.sql.warehouse.dir         hdfs://192.168.1.111:9000/user/hive/warehouse

#hdfs上创建sparkjars包,讲spark的jar包都上传上去
spark.yarn.jars=hdfs://192.168.1.111:9000/spark/jars/* 

#spark.yarn.archive=hdfs://192.168.1.21:9000/spark/jars/*  #存疑

5.在hdfs上新建/spark/jars/文件夹,并将spark的jar包都上传到此处

hadoop fs -mkdir - p /spark/jars
hdfs dfs -put /usr/local/spark/jars/* /spark/jars

#新建/tmp/spark-events文件夹,spark-defaults.conf 配置中用到
hadoop fs -mkdir - p /tmp/spark-events

6.增加配置:hadoop/etc/hadoop/yarn-site.xml

避免spark-shell报错报错

       <property>
               <name>yarn.nodemanager.pmem-check-enabled</name>
               <value>false</value>
       </property>

       <property>
               <name>yarn.nodemanager.vmem-check-enabled</name>
               <value>false</value>
      </property>

      <!-- scheduler configuration, for multi-tasks run in queue, avoid mapreduce-run & pyspark ACCEPTED not run problem -->
      <property>
                <name>yarn.resourcemanager.scheduler.class</name>
                <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
      </property>
      <property>
                <name>yarn.scheduler.fair.preemption</name>
                <value>true</value>
     </property>


<!-- 下面配置用来设置集群利用率的阀值, 默认值 0.8f,最多可以抢占到集群所有资源的 80% -->
        <property>
                <name>yarn.scheduler.fair.preemption.cluster-utilization-threshold</name>
                <value>0.5</value>
        </property>

7.配置 spark 读写 hive(存疑未测试)

拷贝hive-site.xml 到 spark_home/conf/ 目录下

8.下载livy

spark需要livy
下载livy (http://mirrors.tuna.tsinghua.edu.cn/apache/incubator/livy/0.5.0-incubating/livy-0.5.0-incubating-bin.zip)
解压移动到

/usr/local/livy

并在/usr/local/livy 创建目录logs,否则报错

9.修改配置 livy.conf

vim conf/livy.conf                  #livy.conf.template复制为livy.conf再修改
#livy服务端口
livy.server.port = 8998

#spark程序部署使用yarn集群
livy.spark.master = yarn

#spark 程序使用客户端模式
livy.spark.deploy-mode =client

livy.server.session.timeout = 1h
livy.server.session.state-retain.sec = 600s

10.修改配置 livy-env.sh

export LIVY_HOME=/usr/local/livy
export JAVA_HOME=/usr/local/java
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export SPARK_HOME=/usr/local/spark
export SPARK_CONF_DIR=/usr/local/spark/conf
export SCALA_HOME=/usr/local/scala
export LIVY_LOG_DIR=/usr/local/livy/logs
export LIVY_PID_DIR=$/usr/local/livy/run

#PYSPARK_ALLOW_INSECURE_GATEWAY很重要关系到pyspark在hue的启动运行,
#在livy-env.sh、 /etc/profile 、和spark-env.sh都要配置

export PYSPARK_ALLOW_INSECURE_GATEWAY=1

11.spark启动

说明:要先启动Hadoop
切换到Spark目录下,启动spark

cd /usr/local/spark/sbin
start-all.sh                 

#启动后:可以在浏览器输入: ip+8080 端口查看
#如果8080进不去,端口被占用,就是8081或者8082

12.启动livy-server

cd /usr/local/livy/
bin/livy-server

13.启动spark的history和thriftserver(hue集成需要)

#spark目录下
./sbin/start-history-server.sh      
 
./sbin/start-thriftserver.sh --master yarn --deploy-mode client    

sparkthriftserver 用于提供远程 odbc 调用,在远端执行 hive sql 查询
链接:https://www.cnblogs.com/cuishuai/p/7693417.html

14.启动hue

hue部署请看大数据单机部署-hue

15.spark on yarn运行

#yarn管理器运行
#spark目录下
./bin/spark-shell --master yarn --deploy-mode client              #测试是scala否能在yarn上运行
./bin/pyspark --master yarn --deploy-mode client                   #测试是pyspark否能在yarn上运行

1).终端运行命令

spark-shell --master yarn --deploy-mode client 或者pyspark --master yarn --deploy-mode client
后在yarn上web上能看到Application详情:
注意:可以看到Application的name是shell

2).在hue上启动pyspark

hue部署请看大数据单机部署-hue

注意:可以看到Application的name是livy-seeion

16.spark自带资源管理器运行

#本地运行测试  
#spark目录下
./bin/spark-shell local [*]                   
./bin/pyspark --master spark://master:7077  

在spark的web上能看到Application详情


#启动介绍
./bin/pyspark --master <master-url>
Spark 的运行模式取决于传递给 SparkContext 的 Master URL 的值。Master URL 可以是以下任一种形式:
* local 使用一个 Worker 线程本地化运行 SPARK (完全不并行)
* local [*] 使用逻辑 CPU 个数数量的线程来本地化运行 Spark
* local [K] 使用 K 个 Worker 线程本地化运行 Spark(理想情况下,K 应该根据运行机器的 CPU 核数设定)
* spark://HOST:PORT 连接到指定的 Spark standalone master。默认端口是 7077.
* yarn-client 以客户端模式连接 YARN 集群。集群的位置可以在 HADOOP_CONF_DIR 环境变量中找到。
* yarn-cluster 以集群模式连接 YARN 集群。集群的位置可以在 HADOOP_CONF_DIR 环境变量中找到。
* mesos://HOST:PORT 连接到指定的 Mesos 集群。默认接口是 5050。

17.hue的spark使用

pyspark:

word = ["a","a","b","hehe","spark","spark"]
rdd = sc.parallelize(word)
wordCount = rdd.map(lambda word: (word,1)).reduceByKey(lambda a, b : a + b)
print(wordCount.collect())

scala:

val data = Array(1, 2, 3, 4 ,5)
val distData = sc.parallelize(data)
distData.map(s=>s+1).collect()

18.报错问题:

1).

spark master web ui 默认端口为 8080,当系统有其它程序也在使用该接口时,启动 master 时也不会报错,spark 自己会改用其它端口,自动端口号加 1
所以如果8080进不去,就是8081或者8082
最重要就是查看spark/logs文件夹下的日志,端口占用可以看到其提示
彻底解决就要:

sudo netstat -tunlp |grep 8080
#查看端口被占用的进程id
kill -9 进程id 
#再次启动spark
start-all.sh

2).

spark-shell报错

./bin/spark-shell --master yarn --deploy-mode client报错:

WARN yarn.Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.
ERROR spark.SparkContext: Error initializing SparkContext.

解决:
1).上传jar包到hdfs

hdfs dfs -mkdir /sparkjars
hdfs dfs -put /usr/local/spark/jars/*.jar /sparkjars

2).hadoop/etc/hadoop/yarn-site.xml中增加配置,前面有说

3)、 pyspark 任务后 一直处于yarn的web界面显示 ACCEPTED 状态不运行 running,hue上显示session过期

【真实原因】未开启 yarn 多线程模式,也就是 scheduler 为单线程单队列运行

配置 yarn 多线程运行模式
参考https://blog.csdn.net/u010770993/article/details/70312473

4)、spark.driver.memory 调太大,会导致yarn资源不够分配,应用一直accepted状态,配置 spark-defaults.conf修改其大小

19.教程:

spark(python版)教程链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 223,652评论 6 521
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 95,678评论 3 401
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 170,645评论 0 366
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,483评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 69,503评论 6 399
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,039评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,420评论 3 427
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,391评论 0 278
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,921评论 1 322
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,973评论 3 343
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,114评论 1 354
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,761评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,437评论 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,928评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,042评论 1 275
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,596评论 3 380
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,142评论 2 363

推荐阅读更多精彩内容

  • 搭建Spark的单机版集群 一、创建用户 useradd spark passwd spark 二、下载软件 JD...
    葡小萄家的猫阅读 1,732评论 0 3
  • 版权声明:原创作品,谢绝转载!否则将追究法律责任。 楔子 我是在2013年底第一次听说Spark,当时我对Scal...
    李伟铭MIng阅读 4,755评论 0 4
  • 一、简介 Spark是UC Berkeley AMPLab开发的类MapRed计算框架。MapRed框架适用于ba...
    鹅鹅鹅_阅读 2,144评论 0 0
  • 糖很甜,但吃多了舌头会麻;酒能消愁,但喝多了会失去理智;睡能暂时解脱,但睡多了会全身酸痛——做人不要太信任别人,...
    北城未晞阅读 554评论 0 1
  • 划水也划水一个月了。 一波三折,要有个好结果呀。 小姑凉还是要稳一点。 诶,要好好努力加油。棒棒哒。 不要郁结于心...
    姗姗_84d5阅读 161评论 0 1