Spark1.6.1平台搭建(hadoop-2.7.2 scala-2.11.8)

0 说明

0.1 备注
建立文件夹(sparkdir、hadoop、java、scala、spark) 每台机器均有
/usr/sparkdir
            /hadoop
                    /hadoop-2.7.2
            /java
                    /jdk1.8.0_91
            /scala
                    /scala-2.11.8
            /spark
                    /spark-1.6.1-bin-without-hadoop.tgz
0.2 用户组、用户管理
资源:http://www.cnblogs.com/vincedotnet/p/4017574.html
功能:管理组
    用法:gpasswd[-a user][-d user][-A user,...][-M user,...][-r][-R]groupname
    参数:
        -a:添加用户到组
        -d:从组删除用户
        -A:指定管理员
        -M:指定组成员和-A的用途差不多
        -r:删除密码
        -R:限制用户登入组,只有组中的成员才可以用newgrp加入该组

    备注:为了便于权限分配和管理,在
                Ubuntu16Master增加用户组spark并将baoling加入该用户组
                Ubuntu16Slave1增加用户组spark并将baoling加入该用户组
                Ubuntu16Slave2增加用户组spark并将baoling加入该用户组

                sudo groupadd spark / sudo usermod -a -G spark baoling

        相关命令:
                groupdel
                gpasswd
0.3 资源下载汇总
hadoop-2.7.2
    http://mirrors.hust.edu.cn/apache/hadoop/
jdk-8u91-linux-x64.gz
    http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
scala-2.11
    http://www.scala-lang.org/download/2.11.8.html
spark-1.6.1-bin-hadoop2.6
    http://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-1.6.1/spark-1.6.1-bin-hadoop2.6.tgz
0.4 整体资源下载
链接:http://pan.baidu.com/s/1miMtCTi
密码:x3w0
0.5 其他隐含说明
VMavare11
Ubuntu16.04
创建三台虚拟机:Ubuntu16Master、buntu16Slave1、buntu16Slave2
资源解压对应目录:
    hadoop-2.7.2.tar.gz                              -->/usr/sparkdir/hadoop/
    jdk-8u91-linux-x64.gz                            -->/usr/sparkdir/java/
    scala-2.11.8.tgz                                 -->/usr/sparkdir/scala/
    spark-1.6.1-bin-without-hadoop.tgz               -->/usr/sparkdir/spark/

一、安装JDK(所有机器均需要配置)

1.1 准备工作
JDK资源下载
    http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
JDK版本:jdk-8u91-linux-x64.gz
    解压jdk-8u91-linux-x64.gz:tar -xzf jdk-8u91-linux-x64.gz /usr/sparkdir/java/
1.2 环境变量配置
全局配置文件:/etc/profile (此处使用全局)
局部配置文件:~/.bashrc
配置内容:
    JAVA_HOME=/usr/sparkdir/java/jdk1.8.0_91 #(加黑部分是存放jdk的绝对路径)
    PATH=$JAVA_HOME/bin:$PATH
    CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/jre/lib/dt.jar:$JAVA_HOME/jre/lib/tools.jar
    export JAVA_HOME PATH CLASSPATH
备注:在配置文件末尾加入以上内容,最后需要使配置文件有效(source /etc/profile OR source ~/.bashrc)
配置成功与否测试:Java -version

这里写图片描述

二、安装Scala(所有机器均需要配置)

2.1 准备工作
备注
    Scala的版本由Spark的版本决定,这里选择spark-1.6.1及其对应Scala版本Scala 2.11
spark-1.6.1下载
    http://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-1.6.1/spark-1.6.1-bin-hadoop2.6.tgz
scala-2.11下载
    http://www.scala-lang.org/download/2.11.8.html
解压Scala-2.11.8
    tar -xzf scala-2.11.8.tgz /usr/sparkdir/scala/
2.2 配置内容
/etc/profile
export SCALA__HOME=/usr/sparkdir/scala/scala-2.11.8
export PATH=${SCALA_HOME}/bin:$PATH

三、配置SSH免密码登录

3.1 介绍
    在集群管理和配置中有很多工具可以使用。例如,可以采用pssh等Linux工具在集群中分发与复制文件,用户也可以自己书写Shell、Python的脚步分发包。Spark的Master节点向Worker节点命令需要通过ssh进行发送,用户不希望Master每发送一次命令就输入一次密码,因此需要实现Master无密码登陆到所有Worker。Master作为客户端,要实现无密码公钥认证,连接服务端Worker。需要在Master上生成一个秘钥对,包括一个公钥和一个私钥,然后将公钥复制到Worker上。
3.2 其它只是补充
    配置成功的关键在于确保各机器的主机名和IP地址之间能正确解析。修改每台机器的/etc/hosts,如果该台机器做NameNode用,则需要在文件中添加集群中所有机器的IP地址及其对应的主机名;如果该台机器仅作DataNode用,则只需要在文件中添加本机和NameNode的IP地址及其对应的主机名。

这里写图片描述

备注:这里的Master、Slave1、Slave2等等,指的是机器的机器名(使用命令hostname可以查看本机的机器名),切记,如果不是机器名的话会出问题的,并且集群中所有结点的机器名都应该不一样
3.3 配置所有机器/etc/hosts
sudo gedit /etc/hosts
添加如下内容
    192.168.1.114 Master
    192.168.1.118 Slave1
    192.168.1.130 Slave2
3.4 配置主机名/etc/hostname
sudo gedit /etc/hostname
添加如下内容
    Master    <-- Ubuntu16Master
    Slave1    <-- Ubuntu16Slave1
    Slave2    <-- Ubuntu16Slave2

Slave1  Slave2节点上
    建立文件夹
        ~/
        mkdir .ssh
3.5 Master节点上
1)测试是否能够无密码登录本机
    ssh localhost
    备注:如果没有安装openssh-server将出现如下提示“ ssh : connect to host localhost port 22:Connection refused ”, 所以安装openssh-server即可
    sudo apt-get install openssh-server

2)Master生成秘钥对,Master的公钥id_rsa.pub需要传送给Slave1、Slave2,从而实现Master无密码登录Slave
    ssh-keygen -t rsa
    生成秘钥过程中会出现提示信息,按Enter即可

这里写图片描述

3)把Master上的~/.ssh/id_rsa.pub文件追加到Slave1Slave2的~/.ssh/authorized_keys
    首先将master公钥id_rsa.pub传送到Slave1Slave2的~/.ssh/
        sudo scp id_rsa.pub  baoling@Slave1:/home/baoling/.ssh/
        sudo scp id_rsa.pub  baoling@Slave2:/home/baoling/.ssh/
    然后分别在Slave1Slave2上将~/.ssh/id_rsa.pub追加或是复制到~/.ssh/authorized_keys
        cp id_rsa.pub authorized_keys
        或
        cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    备注:配置完毕,如果Master仍然不能访问Worker,可以修改Worker的authorized_keys文件的权限,命令为 chmod 600 ~/.ssh/authorized_keys

四、安装Hadoop

4.1 准备工作
hadoop-2.7.2下载
    http://mirrors.hust.edu.cn/apache/hadoop/
解压hadoop-2.7.2.tar.gz
    tar -zxf hadoop-2.7.2.tar.gz /usr/sparkdir/hadoop/
备注:sudo chown -R baoling:spark /usr/sparkdir/hadoop
4.2 配置环境变量
/etc/profile
    export HADOOP_HOME=/usr/sparkdir/hadoop/hadoop-2.7.2
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    export HADOOP_COMMON_HOME=$HADOOP_HOME
    export HADOOP_HDFS_HOME=$HADOOP_HOME
    export HADOOP_MAPRED_HOME=$HADOOP_HOME
    export HADOOP_YARN_HOME=$HADOOP_HOME
    #以下几项可以不用配置
    #export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    #export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    #export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib" 
    #export JAVA_HOME=/usr/sparkdir/hadoop/hadoop-2.7.2
4.3 编辑配置文件
进入/usr/sparkdir/hadoop/hadoop-2.7.2/etc/hadoop/进行如下配置(涉及文件包括:hadoop-env.sh、core-site.xml、yarn-site.xml、mapred-site.xml)

1)配置hadoop-env.sh文件
    export JAVA_HOME=/usr/sparkdir/java/jdk1.8.0_91

2)配置core-site.xml文件
<configuration>
    /*这里的值指的是默认的HDFS路径*/
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://Master:9000</value>
    </property>

    /*缓冲区大小: io.file.buffer.size默认是4KB*/
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>

    /*临时文件夹路径*/
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/sparkdir/temp</value>
        <description> Abase for other temporary directories </description>
    </property>

    <property>
        <name>hadoop.proxyuser.hduser.hosts</name>
        <value>*</value>
    </property>

    <property>
        <name>hadoop.proxyuser.hduser.groups</name>
        <value>*</value>
    </property>
</configuration>

3)配置yarn-site.xml文件
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>

    /*resourceManager的地址*/
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>Master:18040</value>
    </property>

    /*调度器的端口*/
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>Master:18030</value>
    </property>

    /*resource-tracker端口*/
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>Master:8031</value>
    </property>

    /*resourcemanager管理器端口*/
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>Master:8033</value>
    </property>

    /*ResourceManager 的Web端口、监控 job 的资源调度*/
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>Master:8088</value>
    </property>
</configuration>

4)配置mapred-site.xml文件
备注
    看到的是mapred-site.xml.template,因此需要复制一份 --> sudo cp mapred-site.xml.template  mapred-site.xml
^-_-^发现只有读的权限,因此需要
    sudo chown -R baoling:spark /usr/sparkdir/hadoop/hadoop-2.7.2/etc/hadoop/mapred-site.xml

<configuration>
    /*hadoop对map-reduce运行矿建一共提供了3种实现,在mapred-site.xml中通过“mapreduce.framework.name”这个属性来设置为"classic"."yarn"或者“local”*/
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

    /*MapReduce JobHistory Server地址*/
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>Master:10020</value>
    </property>

    /*MapReduce JobHistory Server web UI 地址*/
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>Master:19888</value>
    </property>

    <property> 
        <name>mapred.job.tracker</name>
        <value>Master:9001</value>
    </property>
</configuration>
4.4 创建namenode和datanode目录,并配置其相应路径
1)创建namenode和datanode目录
/usr/spark
        /hdfs
            /namenode
            /datanode

cd /usr/sparkdir
sudo mkdir /hdfs
cd ./hdfs
sudo mkdir namenode
sudo mkdir datanode

2)执行命令后,再次回到/usr/sparkdir/hadoop/hadoop-2.7.2,配置hdfs-site.xml文件
<configuration>
    /*配置主节点名和端口*/
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>Master:9001</value>
    </property>

    /*配置从节点和端口号*/
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/sparkdir/hdfs/namenode</value>
    </property>

    /*配置datanode的数据存储目录*/
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/sparkdir/hdfs/datanode</value>
    </property>

    /*配置副本数*/
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>

    /*将dfs.webhdfs.enabled属性设置为true,否则就不能使用webhdfs的LISTSTATUS,LISTFILESTATUS等需要列出文件,文件夹状态的命令,因为这些信息都是由namenode保存的*/
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
</configuration>

备注:以上参数配置仅供Hadoop平台搭建学习之用,或有许多纰漏,请读者自行参见“Apache Hadoop-2.7.2官方使用文档”http://hadoop.apache.org/docs/current/index.html
4.5 配置Master和Slave文件
1)master文件负责配置主节点的主机名
备注
    最开始没有master文件,需创建 --> sudo gedit master
#Master为主节点主机名
Master

2)配置slaves文件添加从节点主机名
#Slave为从节点主机名
Slave1
Slave2

Hadoop文件复制
    不安全的做法
    Master: 
        sudo chown -R baoling:spark /usr/sparkdir/
        sudo chmod -R 777 /usr/sparkdir/
    Slava1: 
        sudo chown -R baoling:spark /usr/sparkdir/
        sudo chmod -R 777 /usr/sparkdir/
    Slava2: 
        sudo chown -R baoling:spark /usr/sparkdir/
        sudo chmod -R 777 /usr/sparkdir/

    Master:
        sudo scp -r /usr/sparkdir  baoling@Slave1:/usr/
        sudo scp -r /usr/sparkdir  baoling@Slave2:/usr/
    备注:当然也可以Hadoop所有文件通过pssh发送到各个节点(暂时没有去配置)

Think Time(在Slave1和Slave2节点还遗漏了什么?)
    在Slave1和Slaves的/etc/profile文件里没有对jdk、scala、hadoop进行配置
        sudo gedit /etc/profile
    文件末尾增加如下内容:
    #JDK Configuration
        JAVA_HOME=/usr/sparkdir/java/jdk1.8.0_91 #Please modify JAVA_HOME
        PATH=$JAVA_HOME/bin:$PATH
        CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/jre/lib/dt.jar:$JAVA_HOME/jre/lib/tools.jar
        export JAVA_HOME PATH CLASSPATH

    #SCALA Configuration
        export SCALA__HOME=/usr/sparkdir/scala/scala-2.11.8 #Please modify SCALA_HOME
        export PATH=${SCALA_HOME}/bin:$PATH

    #HADOOP Configuration
        export HADOOP_HOME=/usr/sparkdir/hadoop/hadoop-2.7.2
        export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
        export HADOOP_COMMON_HOME=$HADOOP_HOME
        export HADOOP_HDFS_HOME=$HADOOP_HOME
        export HADOOP_MAPRED_HOME=$HADOOP_HOME
        export HADOOP_YARN_HOME=$HADOOP_HOME
        export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

    #综合起来配置
        export JAVA_HOME=/usr/sparkdir/java/jdk1.8.0_91
        export JRE_HOME=${JAVA_HOME}/jre
        export SCALA_HOME=/usr/sparkdir/scala/scala-2.11.8
        export HAD00P_HOME=/usr/sparkdir/hadoop/hadoop-2.7.2
        export CLASS_PATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
        export PATH=${JAVA_HOME}/bin:${SCALA_HOME}/bin:${HAD00P_HOME}/bin:${HAD00P_HOME}/sbin:$PATH

    格式化Namenode(/usr/sparkdir/hadoop/hadoop-2.7.2/目录下)
        ./bin/hadoop namenode -format
            OR
        hadoop/namenode-format

    启动Hadoop (/usr/sparkdir/hadoop/hadoop-2.7.2/目录下)
        ./sbin/start-all.sh

这里写图片描述

4.6 错误备注
查看日志/usr/sparkdir/hadoop/hadoop-2.7.2/logs/
    hadoop-baoling-namenode-Master.log
    yarn-baoling-resourcemanager-Master.log
    yarn-baoling-resourcemanager-Master.log(通过查询发现如下三个启动问题)

    (1) ERROR
    org.apache.hadoop.yarn.server.resourcemanager.ResourceManager: Returning, interrupted : java.lang.InterruptedException
    (2) ERROR
    org.apache.hadoop.security.token.delegation.AbstractDelegationTokenSecretManager: ExpiredTokenRemover received java.lang.InterruptedException: sleep interrupted
    (3) FATAL
    org.apache.hadoop.yarn.server.resourcemanager.ResourceManager: Error starting ResourceManager org.apache.hadoop.yarn.exceptions.YarnRuntimeException: java.net.BindException: Problem binding to [Master:8030] java.net.BindException: Address already in use; For more details see: http://wiki.apache.org/hadoop/BindException

    解决
        第一第二个错误改变/tmp权限-->sudo chmod -R 777 /tmp/
        第三个错误改变yarn-site.xml的yarn.resourcemanager.address属性以及yarn.resourcemanager.scheduler.address属性,此处分别为Master:18040和Master:18030
yarn-baoling-resourcemanager-Master.log

    ERROR
        org.apache.hadoop.hdfs.server.namenode.NameNode: RECEIVED SIGNAL 15: SIGTERM
    解决
        改变/tmp权限-->sudo chmod -R 777 /tmp/

    hadoop-baoling-datanode-Slave1.log(通过查询发现如下启动问题)
    (1)FATAL
    org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to Master/192.168.1.116:9000. Exiting. 
yarn-baoling-nodemanager-Slave1.log
    解决
        http://www.cnblogs.com/kinglau/p/3796274.html

    hadoop-baoling-datanode-Slave2.log(通过查询发现如下启动问题)
    (1)FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to Master/192.168.1.116:9000. Exiting. 
yarn-baoling-nodemanager-Slave2.log
    解决
        http://www.cnblogs.com/kinglau/p/3796274.html

    其它错误
    -- process information unavailable
    进入/tmp,删除名称为hsperfdata_{username}-->(此处为hsperfdata_baoling)的文件夹,然后重新启动Hadoop
4.7 查看Hadoop启动情况
jps

Master运行情况

这里写图片描述

    Slave1运行情况
        利用ssh登录Slave1并利用jps命令查看

这里写图片描述

    Slave2运行情况
        利用ssh登录Slave2并利用jps命令查看

这里写图片描述

4.8 启动Hadoop (/usr/sparkdir/hadoop/hadoop-2.7.2/目录下)
./sbin/stop-all.sh
运行情况

这里写图片描述

4.9 安装成功验证
查看机器集群状态
    http://master:50070 OR http://192.168.1.114:5007
可以看到当前的live nodes有slave1和slave2两个节点信息

这里写图片描述

备注:hadoop2.x取消jobtraker,因此也没有http://master:50030管理页面。出现Live Nodes为0,请参见http://www.linuxidc.com/Linux/2012-03/57749.htm

http://master:8088 OR http://192.168.1.114:8088
运行情况

这里写图片描述

输入以下命令上传文件到hadoop
    新建HDFS文件夹/testinghadoop fs -mkdir /testing)
        hadoop fs 
        命令可参看http://www.blogjava.net/changedi/archive/2013/08/12/402696.html
        hadood fs -put /etc/profile /testing

    查看50070页面的显示结果

这里写图片描述

至此,Hadoop开发平台就搭建完毕了

五、安装Spark ( 以Spark Standalone为例)

参考:http://blog.csdn.net/lovehuangjiaju/article/details/46883973
5.1 准备工作
下载spark-1.6.1-bin-hadoop2.6.tgz
    http://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-1.6.1/spark-1.6.1-bin-hadoop2.6.tgz
解压spark-1.6.1-bin-hadoop2.6.tgz
    tar -zxf spark-1.6.1-bin-hadoop2.6.tgz -C /usr/sparkdir/spark/
5.2 配置工作
修改/etc/profile文件
    export SPARK_HOME=/usr/sparkdir/spark/spark-1.6.1-bin-hadoop2.6
    export PATH=${SPARK_HOME}/bin:${SPARK_HOME}/sbin:$PATH

#综合起来配置
    export JAVA_HOME=/usr/sparkdir/java/jdk1.8.0_91
    export JRE_HOME=${JAVA_HOME}/jre
    export SCALA_HOME=/usr/sparkdir/scala/scala-2.11.8
    export HAD00P_HOME=/usr/sparkdir/hadoop/hadoop-2.7.2
    export SPARK_HOME=/usr/sparkdir/spark/spark-1.6.1-bin-hadoop2.6
    export CLASS_PATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=${JAVA_HOME}/bin:${SCALA_HOME}/bin:${HAD00P_HOME}/bin:${HAD00P_HOME}/sbin:${SPARK_HOME}/bin:${SPARK_HOME}/sbin:$PATH

备注
    进入/usr/sparkdir/spark/spark-1.6.1-bin-hadoop2.6/conf
    配置conf/spark-defaults.conf文件
    (spark-defaults.conf.template 复制一份 spark-default.sh --> cp spark-defaults.conf.template spark-defaults.conf)
        spark.master=spark://Master:7077
        #hdfs://Master:9000是前面core-site.xml中定义的hs.defaultFS属性值
        spark.eventLog.dir=hdfs://Master:9000/testing

    备注
        新建HDFS文件夹/testing
            hadoop fs -mkdir /testing

    配置conf/spark-env.sh文件
    (spark-env.sh.template 复制一份 spark-env.sh --> cp spark-env.sh.template spark-env.sh )
        export JAVA_HOME=/usr/sparkdir/java/jdk1.8.0_91
        export HADOOP_CONF_DIR=/usr/sparkdir/hadoop/hadoop-2.7.2/etc/hadoop
        SPARK_DRIVER_MEMORY=1000M

    配置conf/slaves文件
    (slaves.template 复制一份 spark-env.sh --> cp slaves.template slaves )
        #加入数据节点主机名
        Slave1
        Slave2

    复制spark-1.6.1-bin-hadoop2.6到Slave1、Slave2的/usr/sparkdir/spark/
        scp -r ./spark-1.6.1-bin-hadoop2.6/ baoling@Slave1:/usr/sparkdir/spark/
        scp -r ./spark-1.6.1-bin-hadoop2.6/ baoling@Slave2:/usr/sparkdir/spark/
5.3 Spark启动与关闭
(1)在Spark根目录启动Spark
    ./sbin/start-all.sh

这里写图片描述

(2)关闭Spark
    ./sbin/stop-all.sh

这里写图片描述

5.4 安装成功验证
jps
    Master运行情况

这里写图片描述

    Slave1运行情况

这里写图片描述

    Slave2运行情况

这里写图片描述

浏览器中输入http://master:8080  OR http://192.168.1.114:8080/
    运行情况

这里写图片描述

5.5 运行示例
 ./bin/run-example SparkPi 10
备注
    出现如下错误

这里写图片描述

根据提示进入网站
    http://wiki.apache.org/hadoop/ConnectionRefused
    但是这个问题没有给出答案,问题出在用户的配置(暂时这样,后面解决)

成功运行后截图

这里写图片描述

5.6 集群程序运行测试
上传README.md文件到hdfs /目录
    hadoop fs -put /usr/sparkdir/spark/spark-1.6.1-bin-hadoop2.6/README.md /testing
顺便查看文件/testing
    hadoop fs -ls /testing

这里写图片描述

    在Master节点,进入 /usr/sparkdir/spark/spark-1.6.1-bin-hadoop2.6目录,执行./bin/spark-shell,打开如下网址:
    http://sparkmaster:8080后可以看到如下运行情况

这里写图片描述

    执行spark-shell截图

这里写图片描述

备注:执行的时候出现如下问题

这里写图片描述

查看对应日志发现是因为:#  Out of Memory Error
    (os_linux.cpp:2627), pid=5070, tid=140020683282176(机器物理内存不足  free -m)
    解决办法
    http://blog.csdn.net/pengych_321/article/details/51252911

输入如下语句:
    val textCount = sc.textFile("/testing/README.md").filter(line => line.contains("Spark")).count()

这里写图片描述

六、快速搭建spark-1.6.1-bin-without-hadoop

6.1 下载部署包sparkdir.tar.gz
链接   http://pan.baidu.com/s/1c1PH45a
密码   2jc9
6.2 创建用户及用户组、配置hosts及hostname、配置环境变量、配置ssh、新建文件夹/usr/sparkdir
(1) 创建用户及用户组(所有机器)
    sudo adduser baoling   #创建用户baoling
    sudo groupadd spark   #创建用户组spark
    sudo usermod -a -G spark baoling   #将用户baoling加入用户组spark

    相关命令:
        groupdel   #删除用户组
        gpasswd    #将用户从用户组中删除
    备注:区分adduser、deluser、useradd、userdel

    (2) 配置hosts和hostname(所有机器)
        sudo gedit /etc/hosts
    添加:
        192.168.1.114    Master
        192.168.1.118    Slave1
        192.168.1.130    Slave2
    备注:这里的ip是对应主机的ip,可以通过ifconfig查到,此处也不做永久ip配置

    sudo gedit /etc/hostname
    在各Ubuntu分别添加:
        Master --> Master
        Slave1 -->  Slave1
        Slave2 -->  Slave2

    (3) 配置环境变量(所有机器)
        sudo gedit /etc/profile
        export JAVA_HOME=/usr/sparkdir/java/jdk1.8.0_91
        export JRE_HOME=${JAVA_HOME}/jre
        export SCALA_HOME=/usr/sparkdir/scala/scala-2.11.8
        export HAD00P_HOME=/usr/sparkdir/hadoop/hadoop-2.7.2
        export SPARK_HOME=/usr/sparkdir/spark/spark-1.6.1-bin-hadoop2.6
        export CLASS_PATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib        
        export PATH=${JAVA_HOME}/bin:${SCALA_HOME}/bin:${HAD00P_HOME}/bin:${HAD00P_HOME}/sbin:${SPARK_HOME}/bin:${SPARK_HOME}/sbin:$PATH

    (4) 配置ssh(所有机器)
        在Master生成秘钥
            ssh-keygen -t rsa
        在各个Slave创建文件夹~/.ssh
            mkdir ~/.ssh
        在Master将秘钥传输到各个Slave(此时需要输入密码)
            sudo scp id_rsa.pub baoling@Slave1:/home/baoling/.ssh/
            sudo scp id_rsa.pub baoling@Slave2:/home/baoling/.ssh/
        在所有机器执行如下命令
             cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

    (5) 新建文件夹/usr/sparkdir(所有机器)
        sudo mkdir /usr/sparkdir
        sudo chown -R baoling:spark /usr/sparkdir
        sudo chmod -R 777 /usr/sparkdir
6.3 在Master解压sparkdir.tar.gz到/usr/、传送到Slave
1、解压(Master)
    sudo tar -zxf ./sparkdir.tar.gz -C /usr

2、传送到Slave(在Master)
    scp -r /usr/sprkdir baoling@Slave1:/usr/
    scp -r /usr/sprkdir baoling@Slave2:/usr/
6.4 测试
!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值