其中所需要的python和spark的软件在该文章中
spark-本地模式的配置和简单使用-****博客
环境配置
首先在别的服务器上均要进行python环境的配置
安装spark
1、上传,解压,重命名
tar -zxvf /opt/install/spark-3.1.2-bin-hadoop3.2.tgz -C /opt/modules
mv spark-3.1.2-bin-hadoop3.2/ spark-standalone
2、删除之前本地模式下的软连接
rm -rf spark
3、建立standalone模式下的软连接
ln -s spark-standalone spark
修改配置文件
spark-env.sh
cd /opt/installs/spark/conf
mv spark-env.sh.template spark-env.sh
export JAVA_HOME=/opt/installs/jdk
export HADOOP_CONF_DIR=/opt/installs/hadoop/etc/hadoop
export SPARK_MASTER_HOST=bigdata01 # 主节点所在的地址
export SPARK_MASTER_PORT=7077 #主节点内部通讯端口,用于接收客户端请求
export SPARK_MASTER_WEBUI_PORT=8080 #主节点用于供外部提供浏览器web访问的端口
export SPARK_WORKER_CORES=1 # 指定这个集群总每一个从节点能够使用多少核CPU
export SPARK_WORKER_MEMORY=1g #指定这个集群总每一个从节点能够使用多少内存
export SPARK_WORKER_PORT=7078
export SPARK_WORKER_WEBUI_PORT=8081
export SPARK_DAEMON_MEMORY=1g # 进程自己本身使用的内存
export SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://bigdata01:9820/spark/eventLogs/ -Dspark.history.fs.cleaner.enabled=true"
spark-defaults.conf
mv spark-defaults.conf.template spark-defaults.conf
spark.eventLog.enabled true
spark.eventLog.dir hdfs://bigdata01:9820/spark/eventLogs
spark.eventLog.compress true
workers
mv workers.template workers
# 删掉localhost,添加以下内容
bigdata01
bigdata02
bigdata03
log4j.properties
mv log4j.properties.template log4j.properties
# 19行:修改日志级别为WARN
log4j.rootCategory=WARN, console
同步
然后将修改过配置文件的spark 同步到bigdata02和03,此时同步过去后是不需要修改任何东西的,同步软连接,同步环境变量配置文件。
启动
启动hdfs
# 第一台机器启动HDFS
start-dfs.sh
# 创建程序运行日志的存储目录(hdfs)
hdfs dfs -mkdir -p /spark/eventLogs/
启动spark
cd /opt/installs/spark
# 启动master:
./sbin/start-master.sh
# 启动所有worker
./sbin/start-workers.sh
# 要想启动某个work
# ./sbin/start-worker.sh
# 启动日志服务
./sbin/start-history-server.sh
# 要想关闭某个服务,将start换为stop
页面启动
master监控页面http://bigdata01:8080/ 通讯端口为7077
单个job的监控页面http://bigdata01:4040/,只有任务启动后,才能访问,任务结束,就不能访问了
简单使用
1、计算pi——spark-submit
/opt/installs/spark/bin/spark-submit --master spark://bigdata01:7077 /opt/installs/spark/examples/src/main/python/pi.py 200
2、pyspark
cd /opt/installs/spark
./bin/pyspark --master spark://bigdata01:7077
# 需求:将一个包含 1~ 10 共10个元素的列表,使用Spark实现分布式处理,将每个元素的平方输出
# 1、定义一个列表
list1 = [1,2,3,4,5,6,7,8,9,10]
# 2、将列表通过SparkContext将数据转换为一个分布式集合RDD——将一个list变为Rdd对象
inputRdd = sc.parallelize(list1)
# 获取行数 10行
inputRdd.count()
# 获取前n行的内容 ,放到一个list中,每行占一个
fileRdd.take(3)
# 调用Rdd中的map方法 返回还是一个Rdd
rsRdd = inputRdd.map(lambda x : x**2)
# 将结果RDD的每个元素进行输出
rsRdd.foreach(lambda x : print(x))