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 测试

!

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
Ubuntu16.04安装Hadoop2.6+Spark1.6,并安装python开发工具Jupyter notebook,通过pyspark测试一个实例,調通整个Spark+hadoop伪分布式开发环境。 主要内容:配置root用户,配置Hadoop,Spark环境变量,Hadoop伪分布式安装并测试实例,spark安装并通过Jupter notebook进行开发实例,配置Jupter notebook兼容Python2和python3双内核共存开发。 默认已经正确安装了JDK,并设置了JAVA_HOM
摘要 MLlib(机器学习)分两种——监督学习,无监督学习。首先监督学习,类似普贝叶斯这样的分类算法。要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应。显而眼见的是,这种需求另监督学习有很大的局限性,尤其在海量数据处理时。要预先处理数据以满足算法需求得耗费大量资源与时间。此时,可以使用聚类算法这样的无监督学习,相比于分类,聚类不依赖预定义的类和类标号的训练实例。本文将聚类算法拆分开来。深刻理解其思想。 相关知识 相异度计算——聚类,见名之意,便是将数据聚集起来,但是并非是将所有

Kubernetes1.3新特性 - 2016-07-20 14:07:33

本次分析的kubernetes版本号:v1.3.0。 scheduler模块 新增了kube-api-content-type参数,表示scheduler模块发送给api-server的请求类型,默认值是“application/vnd.kubernetes.protobuf”。 新增了hard-pod-affinity-symmetric-weight参数,表示POD调度规则亲和力的权重,取值范围从0到100。 新增了failure-domains参数,这是一个字符串参数,表示POD调度时亲和力参数。在
kafka学习之路(二)——提高 消息发送流程 因为Kafka 内在就是 分布式的 ,一个Kafka 集群通常包括多个代理。 为了均衡负载,将话题分成多个分区 , 每个代理存储一或多个分区 。 多个生产者和消费者能够同时生产和获取消息 。     过程: 1.Producer根据指定的partition方法(round-robin、hash等),将消息发布到指定topic的partition里面 2.kafka集群接收到Producer发过来的消息后,将其持久化到硬盘,并保留消息指定时长(可配置),而不关
(上图 2016微软全球合作伙伴大会吸引了144个国家的云解决方案商参会 ) ​2016年7月14日,历时三天的微软全球合作伙伴大会WPC 2016在加拿大多伦多落下帷幕,来自全球144个国家的16,000名软件开发商(ISV)、系统集成商(SI)、增值分销商(VAR)以及新一代云服务商(CSP)等汇聚一堂,他们也是全球最活跃、最顶尖的云计算生态代表。 在本次合作伙伴大会上,微软发布了合作伙伴“红宝书”——《当代微软合作伙伴系列:解决方案商如何在云世纪成功》。这本与IDC合作的书,历时4年完成,每年耗资上

Hadoop使用学习笔记(1) - 2016-07-19 18:07:38

Hadoop使用学习笔记 1.Hadoop安装与基本概念 Hadoop发行版本地址 1.1环境配置需求 本文是用的Hadoop版本是最新的2.7.2发行版。 本文分两个机器环境,分别是研发环境和测试环境: 本地环境配置(配置较好,用于压测): 操作系统: LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0
本文主要描述了朴素贝叶斯分类方法,包括模型导出和学习描述。实例部分总结了《machine learning in action》一书中展示的一个该方法用于句子感情色彩分类的程序。 1 方法概述 学习(参数估计) 实现:朴素贝叶斯下的文本分类 模型概述 朴素贝叶斯方法,是指 朴素:特征条件独立 贝叶斯:基于贝叶斯定理 根据贝叶斯定理,对一个分类问题,给定样本特征x,样本属于类别y的概率是 p ( y | x ) = p ( x | y ) p ( y ) p ( x ) 。 。 。 。 。 。 ( 1 )
更新记录 2017-07-18 初稿 MapReduce简介 在Hadoop MapReduce中,框架会确保reduce收到的输入数据是根据key排序过的。数据从Mapper输出到Reducer接收,是一个很复杂的过程,框架处理了所有问题,并提供了很多配置项及扩展点。一个MapReduce的大致数据流如下图: 更详细的MapReduce介绍参考 Hadoop MapReduce原理与实例 。 Mapper的输出排序、然后传送到Reducer的过程,称为shuffle。本文详细地解析shuffle过程,深

Spark的广播和累加器的使用 - 2016-07-18 14:07:48

一、广播变量和累加器 1.1 广播变量: 广播变量允许程序员将一个只读的变量缓存在每台机器上,而不用在任务之间传递变量。广播变量可被用于有效地给每个节点一个大输入数据集的副本。Spark还尝试使用高效地广播算法来分发变量,进而减少通信的开销。 Spark的动作通过一系列的步骤执行,这些步骤由分布式的洗牌操作分开。Spark自动地广播每个步骤每个任务需要的通用数据。这些广播数据被序列化地缓存,在运行任务之前被反序列化出来。这意味着当我们需要在多个阶段的任务之间使用相同的数据,或者以反序列化形式缓存数据是十分
引言: 对于刚接触ES的童鞋,经常搞不明白ES的各个概念的含义。尤其对“索引”二字更是与关系型数据库混淆的不行。本文通过对比关系型数据库,将ES中常见的增、删、改、查操作进行图文呈现。能加深你对ES的理解。同时,也列举了kibana下的图形化展示。 ES Restful API GET、POST、PUT、DELETE、HEAD含义: 1)GET:获取请求对象的当前状态。 2)POST:改变对象的当前状态。 3)PUT:创建一个对象。 4)DELETE:销毁对象。 5)HEAD:请求获取对象的基础信息。 M