首先安装scala
scala-2.11.7下载
下载之后解压
tar -zxvf scala-2.11.7.tgz
解压之后删除源文件
rm -rf scala-2.11.7.tgz
配置环境
在此需要打开/etc/profile文件进行配置
vi /etc/profile
在文件的最后插入
export SCALA_HOME=/data/bigdata/scala-2.11.7
export PATH=$PATH:$SCALA_HOME/bin
插入了之后要使得命令生效,需要的是:
source /etc/profile
检测是否安装成功
scala -version
同步到其他机器 scp 可以参考https://www.cnblogs.com/lihuanghao/p/9338040.html
安装spark
下载解压缩:tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz
重命名:mv spark-2.2.0-bin-hadoop2.7 spark-2.2.0
cd spark-2.2.0
此处需要配置的文件为两个
spark-env.sh和slaves
cp conf/spark-env.sh.template conf/spark-env.sh
在最尾巴加入
export JAVA_HOME=/data/bigdata/jdk1.8.0_172
export SCALA_HOME=/data/bigdata/scala-2.11.7
export HADOOP_HOME=/data/bigdata/hadoop-2.7.6
export HADOOP_CONF_DIR=/data/bigdata/hadoop-2.7.6/etc/hadoop
export SPARK_MASTER_IP=SparkMaster
export SPARK_WORKER_MEMORY=1g
export SPARK_WORKER_CORES=2
export SPARK_WORKER_INSTANCES=1
export SPARK_LOCAL_IP=127.0.0.1
说明:
- JAVA_HOME:Java安装目录
- SCALA_HOME:Scala安装目录
- HADOOP_HOME:hadoop安装目录
- HADOOP_CONF_DIR:hadoop集群的配置文件的目录
- SPARK_MASTER_IP:spark集群的Master节点的ip地址
- SPARK_WORKER_MEMORY:每个worker节点能够最大分配给exectors的内存大小
- SPARK_WORKER_CORES:每个worker节点所占有的CPU核数目
- SPARK_WORKER_INSTANCES:每台机器上开启的worker节点的数目
修改slaves
vi conf/slaves
node2
node3
附:(spark & hive 整合)
*修改hive-site.xml
<property>
<name>hive.metastore.uris</name>
<value>thrift://node1:9083</value>
<description>....</description>
</property>
保存退出后 将hive-site.xml 复制到spark/conf下面
*链接数据库将hive下的mysql-connect放入spark jars下面
下面示例会用到
将spark同步到各机器
scp -r /data/bigdata/ ....
启动
./sbin/start-all.sh
web页面:
SparkMaster_IP:8080
SparkMaster_IP:4040
附:
python环境配置
export PYTHONPATH=/data/bigdata/spark-2.2.0/python:/data/bigdata/spark-2.2.0/python/build:/data/bigdata/spark-2.2.0/python/lib/py4j-0.10.4-src.zip:$PYTHONPATH
python 调用
vi a.py
from pyspark import SparkConf,SparkContext
from pyspark.sql import HiveContext
conf = SparkConf().setAppName("spark_sql_py")
sc = SparkContext(conf=conf)
hc = HiveContext(sc)
data = hc.sql("select substring_index(path,'?',1) as path,count(*) as num from dbjs_log group by path order by num desc").write.jdbc(url="jdbc:mysql://mysql:3
306/test?useSSL=false",table="he_result",mode="append",properties={"user":"sqoop","password":"sqoop"});
vi b.py
from pyspark import SparkConf,SparkContext
from pyspark.sql import HiveContext
conf = SparkConf().setAppName("spark_sql_py")
sc = SparkContext(conf=conf)
hc = HiveContext(sc)
data = hc.read.format("jdbc").option("url","jdbc:mysql://mysql:3306/health").option("drive","com.mysql.jdbc.Driver").option("dbtable","he_count").option("user
","sqoop").option("password","sqoop").load()
data.registerTempTable("he_count1")
hc.sql("select ctype,count(*) as num from he_count1 group by ctype order by num desc").write.jdbc(url="jdbc:mysql://mysql:3306/test?useSSL=false",table="he_re
sult",mode="append",properties={"user":"sqoop","password":"sqoop"});