本文共 4979 字,大约阅读时间需要 16 分钟。
目录
Spark 是 Apache 顶级项目里面最火的大数据处理的计算引擎,它目前是负责大数据计算的工作。包括离线计算或交互式查询、数据挖掘算法、流式计算以及图计算等。全世界有许多公司和组织使用或给社区贡献代码,社区的活跃度见 www.github.com/apache/spark,是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点,因此Spark能更好地适用于数据挖掘与分析、机器学习等需要迭代的MapReduce的算法
核心组件如下:
由于这些组件满足了很多大数据需求,也满足了很多数据科学任务的算法和计算上的需要,Spark快速流行起来。不仅如此,Spark也提供了使用Scala、Java和Python编写的API;满足了不同团体的需求,允许更多数据科学家简便地采用Spark作为他们的大数据解决方案
spark不仅可以将任何的hadoop分布式文件系统上的文件读取为分布式数据集,也可以支持其他支持hadoop接口的系统,比如本地文件、亚马逊S3、Hive、HBase等。 下图为hadoop与节点之间的关系:
Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度.YARN 分层结构的本质是 ResourceManager。这个实体控制整个集群并管理应用程序向基础计算资源的分配。ResourceManager 将各个资源部分(计算、内存、带宽等)精心安排给基础 NodeManager(YARN 的每节点代理) Hadoop2版本以上,引入YARN之后,不仅仅可以使用MapReduce,还可以引用spark等等计算
<1>在VMware中准备了两台ubuntu14.04的虚拟机,修改主机名为master,slave01,并且两台机器的主机名以及ip如下(根据自己所在网络环境修改):
主机名称 | IP地址 |
---|---|
master | 192.168.1.123 |
slave01 | 192.168.1.124 |
<2>修改master和slave01的/etc/hosts文件如下:
127.0.0.1 localhost192.168.1.123 master192.168.1.124 slave01
通过ping命令测试两台主机的连通性
<1>分别在两台主机上运行一下命令
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsacat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
<2>将slave01的公钥id_dsa.pub传给master
scp ~/.ssh/id_dsa.pub itcast@master:/home/itcast/.ssh/id_dsa.pub.slave01
<3>将 slave01的公钥信息追加到 master 的 authorized_keys文件中
cat id_dsa.pub.slave01 >> authorized_keys
<4>将 master 的公钥信息 authorized_keys 复制到slave02 的 .ssh 目录下
scp authorized_keys itcast@slave01:/home/itcast/.ssh/authorized_keys
<1>使用jdk_u780版本的安装包,所有环境统一解压到/opt/software/目录下,分别在master和slave01中添加环境变量:
export JAVA_HOME=/opt/software/java/jdk1.7.0_80export JRE_HOME=/opt/software/java/jdk1.7.0_80/jreexport CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexport PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
<2>使用Hadoop-2.6.0本的安装包,所有环境统一解压到/opt/software/目录下,分别在master和slave01中添加环境变量,记住将bin目录添加到PATH中:
export HADOOP_HOME=/opt/software/hadoop/hadoop-2.6.0
<1>在/opt/software/hadoop/hadoop-2.6.0/etc/hadoop目录下修改hadoop-env.sh 增加如下配置:
export JAVA_HOME=/opt/software/java/jdk1.7.0_80export HADOOP_PREFIX=/opt/software/hadoop/hadoop-2.6.0
<2>修改core-site.xml,tmp目录需要提前创建好
fs.defaultFS hdfs://master:9000 hadoop.tmp.dir /opt/software/hadoop/hadoop-2.6.0/tmp
<3>修改hdfs-site.xml,指定数据的副本个数
dfs.replication 2
<4>修改mapred-site.xml
mapreduce.framework.name yarn
<5>yarn-env.sh中增加JAVA_HOME的环境
<6>修改yarn-site.xmlyarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname master
<7>slaves中增加集群主机名
masterslave01
在slave01上做同样的配置
<1>start-dfs.sh,启动namenode和datanode
在master和slave01上使用jps命令查看java进程,也可以在
上查看<2>start-yarn.sh,启动 ResourceManager 和 NodeManager,在master和slave01上
使用jps命令查看java进程
如果上述都成功了,那么集群启动就成功了
<1>使用scala-2.10.6版本的安装包,同样解压放在/opt/software/scala/下,相关文件夹需自己创建
<2>修改家目录下的.bashrc文件,添加如下环境,记住添加scala的PATH路径:export SCALA_HOME=/opt/software/scala/scala-2.10.6export SPARK_HOME=/opt/software/spark/spark-1.6.0-bin-hadoop2.6
运行source .barhrc使环境变量生效 <3>同样在slave01上配置
<4>输入scala命令,查看是否生效
<1>spark安装包使用spark-1.6.0-bin-hadoop2.6,同样解压到/opt/software/hadoop
<2>修改环境变量文件.bashrc,添加如下内容export SPARK_HOME=/opt/software/spark/spark-1.6.0-bin-hadoop2.6#以下是全部的PATH变量export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOM E/bin:$SCALA_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin
运行source .bashrc使环境变量生效
<1>进入Spark的安装目录下的conf目录,拷贝spark-env.sh.template到spark-env.sh
cp spark-env.sh.template spark-env.sh
编辑spark-env.sh,在其中添加以下配置信息:
export SCALA_HOME=/opt/software/scala/scala-2.10.6export JAVA_HOME=/opt/software/java/jdk1.7.0_80export SPARK_MASTER_IP=192.168.0.114export SPARK_WORKER_MEMORY=1gexport HADOOP_CONF_DIR=/opt/software/hadoop/hadoop-2.6.0/etc/hadoop
<2>将slaves.template拷贝到slaves,编辑起内容为:
masterslave01
此配置表示要开启的worker主机 <3>slave01同样参照master配置
<1>启动Master节点,运行start-master.sh,结果如下:
<2>启动所有的worker节点,运行start-slaves.sh,运行结果如下:<3>输入jps命令查看启动情况
<4>浏览器访问 可查看Spark集群信息