Apache Spark 是一种大规模数据处理的快速通用引擎,使用基于内存的处理方式,较与MapReduce而言,解决了其
多次IO操作带来的效率低问题,从而达到快速的大数据计算与分析
- shuffle
快:基于内存的处理方式
易用性:可以使用多种编程语言进行开发,例如:Scala,Java,Python
通用性:适用于不同的处理场景
1.交互式查询 =>
2.流式计算 =>
- Spark SQL
3.图计算 =>
- Spark Streaming
4.机器学习 =>
- Spark GraphX
兼容性:可以运行在 Hadoop, Mesos, standalone,还可以访问各种数据源,包括HDFS,Cassandra, HBase, and S3
- Spark MLlib
基于内存的方式,容易导致出现OOM(out of memory)异常(可以通过优化Spark或者使用Flink替代解决方案)
Spark集群中包含三个重要的概念:Master,Worker,Executer
Master:掌管着整个集群的资源,负责资源的调度,和Hadoop Yarn很像,并接受客户端的请求,未其分配资源。
Worker:管理着节点的资源,具体的执行任务都是在Worker上面执行的,在默认情况下Worker会最大化的使用节点的资源,这样是导致OOM的根本原因。
Executer:运行在Worker上面,可以按照线程来理解。
oracle linux 6 下载地址:http://pan.baidu.com/s/1i5EeRMP
vmware fusion 8 下载地址:http://pan.baidu.com/s/1gfaTma3
JDK 下载地址:http://pan.baidu.com/s/1bpi2W6j
Spark 下载地址:http://pan.baidu.com/s/1slulCTZ
我们先创建一台名为“Spark81”的虚拟机
- tar -xvf jdk-8u151-linux-x64.tar -C training/
在文件的末尾添加
- vim ~/.bash_profile
- JAVA_HOME=/root/training/jdk1.8.0_151
- export JAVA_HOME
- PATH=$JAVA_HOME/bin:$PATH
- export PATH
然后执行如下命令,使配置生效
配置成功后,运行
- source ~/.bash_profile
出现下图则代表配置Java环境变量成功
- java -version
- tar -xvf spark-2.2.0-bin-hadoop2.7.tar -C training/
在文件的末尾添加
- vim ~/.bash_profile
- SPARK_HOME=/root/training/spark-2.2.0-bin-hadoop2.7
- export SPARK_HOME
- PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
- export PATH
然后执行如下命令,使配置生效
配置成功后,运行
- source ~/.bash_profile
出现下图则代表配置Spark环境变量成功并进入了Spark Shell模式
- spark-shell
执行
在文件的末尾添加 192.168.0.81 spark81 --虚拟机设置的桥接模式,本机为0段IP
- vim /etc/hosts
执行
编辑spark-env.sh,因为我们要在StandAlone模式上运行Spark,添加如下内容到文件末尾
- cp spark-env.sh.template spark-env.sh
执行
编辑slave.sh,修改文本“localhost”为文本“spark81”
- cp slaves.sh.template slave.sh
如下图
- start-all.sh
从图中可以看到,启动日志已经被写到logs文件夹,执行
- jps
在浏览器的地址栏输入:spark81:8080
我们需要准备spark82,spark83,spark84,其中spark82作为Master节点,spark83和spark84为Worker节点
- 192.168.0.82 spakr82
- 192.168.0.83 spark83
- 192.168.0.84 spark84
- scp -r jdk-8u151-linux-x64/ root@spark82:training
- scp -r jdk-8u151-linux-x64/ root@spark83:training
- scp -r jdk-8u151-linux-x64/ root@spark84:training
- scp -r spark-2.2.0-bin-hadoop2.7/ root@spark82:training
- scp -r spark-2.2.0-bin-hadoop2.7/ root@spark83:training
- scp -r spark-2.2.0-bin-hadoop2.7/ root@spark84:training
这里也顺带将spark的配置拷贝了过来
如图
- start-all.sh
可视化如图
我们在使用类似于scp这种命令的时候,往往需要输入密码,几台机器无所谓,但是集群中存在上百台机器,手动输入密码显然不可取,所以衍生出了免密码登录的配置,主要采用不对称加密的方式来实现免密码登录
执行
然后一直按enter即可,生成的密钥对存在于.ssh/
- ssh-keygen -t rsa
- ssh-copy-id -i .ssh/id_rsa.pub root@spark83
- ssh-copy-id -i .ssh/id_rsa.pub root@spark84
- ...
Worker节点无法和Master节点通信
1.查看Worker节点的logs文件夹下的日志,可以查看到具体的错误信息
2.值得注意的一点是(本人吃过亏,查了好久才发现是是防火墙的问题):应该检查防火墙是否关闭或者对应的端口号是否开放
查看防火墙状态
关闭防火墙
来源: http://www.cnblogs.com/retop/p/7843071.html