您的位置:首页 > 编程语言 > Java开发

Spark的环境搭建以及简单的eclipse的两种运行方式--standalone和yarn

2016-12-01 15:25 681 查看
前言:会一些linux的基础,以及java基础。以及是先搭建好java环境,搭建环境是单机版。假定ip:192.168.248.133

步入正轨,我们直接来说说怎么搭建一个基于hadoop的spark环境。目的能够让spark将job提交到hadoop上处理。利用hadoop的分布式框架。

第一步:搭建hadoop的单机环境

1.在/etc/hostname 下修改对应的名字。 比如Master

2.修改etc/hosts 修改成192.168.248.133Master

3.首先在ubuntu上配置ssh免密码。

a.安装ssh : apt-get install ssh openssh-server

b.cd ~/.ssh(如果显示文件不存在。先输入ssh localhost命令)

c.ssh-keygen -t rsa (一直按回车)

d. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys (将生成的公钥添加到ssh中)

e.尝试使用ssh localhost 进入 exit退出

4.下载hadoop2.6.0,并完成相应的配置

a.下载hadoop:wget http://apache.fayea.com/hadoop/core/hadoop-2.6.0/hadoop-2.6.0.tar.gz
b.解压到安装目录下 tar -zxvf hadoop-2.6.0.tar.gz

c.我是解压到 /home下的目录.然后进入到hadoop的目录下。

cd /opt/hadoop-2.6.0

就能看到hadoop的目录结构了。



5.修改配置文件 进入到hadoop目录下的etc/hadoop目录修改里面的配置文件

    a.编辑 core-site.xml 

<configuration>

   
   <property>

 
<name>hadoop.tmp.dir</name>

         
    <value>/usr/share/hadoop/tmp</value>

     
   </property>

       
  <property>

         
      <name>fs.defaultFS</name>

             
  <value>hdfs://192.168.248.133:9000</value>

     
   </property>

</configuration>
 
b.编辑   hdfs-site.xml

<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.248.133:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/share/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/share/hadoop/tmp/dfs/data</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>

</configuration>


    c.编辑yarn-site.xm
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>


    d.编辑 slave  (有几个节点就添加几个节点,如果是配置单机版,就将里面的节点名改为主节点Master的节点名)

启动hadoop

准备:切换 Hadoop 的模式,不管是从集群切换到伪分布式,还是从伪分布式切换到集群,如果遇到无法正常启动的情况,可以删除所涉及节点的临时文件夹,这样虽然之前的数据会被删掉,但能保证集群正确启动。或者可以为集群模式和伪分布式模式设置不同的临时文件夹(未验证)。所以如果集群以前能启动,但后来启动不了,特别是 DataNode 无法启动,不妨试着删除所有节点(包括 Slave 节点)上的 tmp 文件夹,重新执行一次 bin/hdfs namenode -format,再次启动试试。

6.启动hadoop

a.cd /opt/hadoop-2.6.0

b.bin/hdfs namenode -format # 首次运行需要执行初始化,后面不再需要



sbin/start-all.sh

c.通过命令jps可以查看各个节点所启动的进程(我这个是事先搭建好了spark,没有搭建spark的就没有6个进程,没有master和worker进程)



6.节点都启动好了之后,打开她的监控页面 Master:8088



可以看到一个活跃的节点。到此hadoop环境已经搭建完成。需要优化可以在配置文件里添加一些优化信息。比如说日志的配置等等

第二步:搭建spark的单机环境

1.下载spark1.6.0.虽然现在spark2.0已经出来了,但是使用的不是太多。我们还是使用1.6.0的版本

a.wget http://d3kbcqa49mib13.cloudfront.net/spark-1.6.1-bin-hadoop2.6.tgz
我们选择预编译好的spark1.6.1的版本。也可自行编译。



2.同上hadoop。我们将其解压到安装目录下

tar -zxvf spark-1.6.1-bin-hadoop2.6.tgz

改个名字吧,这个文件夹名字有点长。 mv spark-1.6.1-bin-hadoop2.6 spark1.6

3.修改配置文件

a.将spark1.6里面的conf文件夹里面的模板文件全部替换成使用的文件。比如说 mv spark-env.sh.tmp spark-env.sh

在spark-env.sh中添加

export JAVA_HOME=
export HADOOP_HOME=
export SPARK_MASTER_IP=Master
#export SPARK_MASTER_HOSTS=192.168.244.133
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SCALA_HOME=/opt/scala-2.11.8
export SPARK_YARN_USER_ENV="CLASSPATH=/opt/hadoop-2.6.0/etc/hadoop"
export SPARK_DIST_CLASSPATH=$(/opt/hadoop-2.6.0/bin/hadoop classpath)
export SPARK_WORKER_MEMORY=2g


b.修改slave文件。将localhost换成Master

4.安装scala

a.下载scala wget http://downloads.lightbend.com/scala/2.11.8/scala-2.11.8.tgz
b.将scala解压到安装目录 tar -zxvf scala-2.11.8.tgz

c.将scala的路径配置到环境变量里。

在/etc/profile中添加

export SCALA_HOME=/opt/scala-2.11.8

export PATH=$SCALA_HOME/bin:$PATH

5.到此spark的单机版搭建完成。启动spark。

a.在spark安装目录下输入sbin/start-all.sh

b.jps输入我们就能看见worker和master节点了。

6.打开她的监控页面 Master:8080就能看见spark的监控页面



到这一步就代表spark已经搭建完成了。现在已经可以在spark上跑代码啦。

第三步:将eclipse作为开发环境

a.将hadoop-eclipse-plugin-2.6.0.jar放到eclipse里面的plugin文件夹目录下。

b. 启动eclipse。在eclipse中的window的preferences的Hadoop Map/Reduce下添加hadoop的路径。



c.创建一个hadoop的location





第四步:创建工程

1.创建一个简单的java工程。

a.在工程里面创建三个目录,分别是conf,lib,yarn

b.将spark目录下的conf下的所有配置文件放入到conf里面,将spark里面的lib下的spark-assembly-1.6.1-hadoop2.6.0.jar放入到lib,将hadoop下的etc下的hadoop里面core-site.xml hdfs-site.xml yarn-site.xml放到yarn文件夹里面。



2.基于spark的standslone模式

a.创建一个stanalone类

直接上代码:
public class stanalone{
private static final Pattern SPACE = Pattern.compile(" ");
public static void main(String[] args) {
//创建sparkConf
SparkConf conf = new SparkConf().setAppName("standaloneTest").setMaster("spark://master:7077");
JavaSparkContext sc = new JavaSparkContext(conf);
JavaRDD rdd= Arrays.asList(1,2.2,5);
JavaRDD dis =sc.parallelize(rdd);
System.out.println("array num = "+dis.count());//控制台打印出array的个数 4
sc.stop();






到此我们看见我们已经成功的在spark上运行了一个简单的计数。

2.基于spark的yarn模式

a.创建一个stanalone类

直接上代码:
public class stanalone{
private static final Pattern SPACE = Pattern.compile(" ");
public static void main(String[] args) {
//创建sparkConf
SparkConf conf = new SparkConf().setAppName("yarn").setMaster("yarn-client");
//根据官网上面的提示
conf.set("spark.yarn.dist.files","/conf/yarn-site.xml");
conf.set("spark.yarn.jar","/lib/spark-assembly-1.6.1-hadoop2.6.0.jar");
JavaSparkContext sc = new JavaSparkContext(conf);
//将工程打包成jar test.jar
sc.addJar("test.jar");
JavaRDD rdd= Arrays.asList(1,2.2,5);
JavaRDD dis =sc.parallelize(rdd);
System.out.println("array num = "+dis.count());//控制台打印出array的个数 4
sc.stop();






到此我们看见我们已经成功的在hadoop上运行了一个简单的计数。

整个过程到此结束。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spark hadoop 分布式 yarn