0%

Spark on YARN部署文档

环境:Ubuntu 12.04 LTS Desktop 64bit
提示:这里只用了一台机器同时做master节点和slave节点,如果想要分布式部署,即多个slave节点,准备环境部分一样,然后配置文档做一些修改增加slave节点就行,看完这份文档就知道怎么修改了

准备环境

  1. 设置用户名
    我这里设成master
  2. 配置hosts文档
    vi /etc/hosts
    10.211.50.44 master
    配置之后ping一下用户名看是否生效
    ping master
  3. 关闭防火墙
    sudo ufw disable
  4. 安装JAVA
    提示:最好建一个目录,把需要用到的东西都装在这一个目录里面,这样比较方便,我用的是/usr/java,从官网下载最新版JAVA就可以,Spark官方说明JAVA只要是6以上的版本都可以,我下的是jdk-7u67-linux-x64.gz
    /usr/java这目录下直接解压
    tar xvzf jdk-7u67-linux-x64.gz
    修改环境变量
    vi /etc/profile
    1
    2
    3
    4
    export JAVA_HOME=/usr/java/jdk1.7.0_67
    export JRE_HOME=/usr/java/jdk1.7.0_67/jre
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    使环境变量生效
    source /etc/profile
    验证一下JAVA是否成功安装
    java -version
    如果打印出版本信息,说明安装成功
  5. 安装配置Scala
    Spark官方说明Scala要求为2.10.x版本,注意不要下错版本,我这里下了2.10.3
    同样放在/usr/java目录下然后解压
    tar xvzf scala-2.10.3.tgz
    修改环境变量
    vi /etc/profile
    添加下列内容:
    1
    2
    export SCALA_HOME=/usr/java/scala-2.10.3
    export PATH=$PATH:$SCALA_HOME/bin
    使环境变量生效
    source /etc/profile
    验证Scala是否安装成功
    scala -version
    如果打印出来版本信息,说明安装成功 0.6
  6. 配置SSH无密码通信
    安装Openssh server
    1
    2
    apt-get install openssh-server
    ssh-keygen -t rsa (然后一直按回车)
    注意提示的密钥所在的目录,然后切换到那个目录里面
    cat .ssh/id_rsa.pub >> .ssh/authorized_keys
    验证SSH无密码通信
    ssh localhost

hadoop YARN安装

  1. 安装hadoop
    从官网下载hadoop2.2.0版本
    解压
    tar xvzf hadoop-2.2.0.tar.gz
    解压之后会在/usr/java目录下看到hadoop的文档:hadoop-2.2.0
  2. 配置hadoop
    hadoop-2.2.0/etc/hadoop/hadoop-env.sh中,添加JAVA安装目录
    export JAVA\_HOME=/usr/java/jdk1.7.0\_67
    hadoop-2.2.0/etc/hadoop下,将mapred-site.xml.templat重命名成mapred-site.xml,并添加以下内容:
    1
    2
    3
    4
    5
    6
    <configuration>
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
    </configuration>
    hadoop-2.2.0/etc/hadoop/中,修改core-site.xml
    1
    2
    3
    4
    5
    6
    7
    <configuration>
    <property>
    <name>fs.default.name</name>
    <value>hdfs://master:8020</value>
    <final>true</final>
    </property>
    </configuration>
    hadoop-2.2.0/etc/hadoop/中,修改yarn-site.xml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <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>
    </configuration>
    注:之前从网上看到的配置文档都是mapreduce.shuffle,然后起yarn的时候yarn就一直没起起来,运行jps命令,可以看到yarn起起来,而且有进程号,但是其实已经挂了,去看log文档发现有错,具体错误忘记截图留念了
    修改hdfs-site.xml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <configuration>
    <property>
    <name>dfs.namenode.name.dir</name>
    <value>/mnt/disk1/yarn/dfs/name</value>
    </property>
    <property>
    <name>dfs.datanode.data.dir</name>
    <value>/mnt/disk1/yarn/dfs/data</value>
    </property>
    <property>
    <name>dfs.replication</name>
    <value>1</value>
    </property>
    <property>
    <name>dfs.permissions</name>
    <value>false</value>
    </property>
    </configuration>
    在slaves文件中添加你的节点ip或者host:
    master
    修改bashrc文件
    vi /root/.bashrc
    添加以下内容:
    1
    2
    export HADOOP\_COMMON\_LIB\_NATIVE\_DIR=/usr/java/hadoop-2.2.0/lib/native
    export HADOOP_OPTS="-Djava.library.path=/usr/java/hadoop-2.2.0/lib"
  3. 验证hadoop是否安装成功
    启动HDFS
    进入hadoop所在目录
    sbin/start-dfs.sh
    启动YARN
    sbin/start-yarn.sh
    打开浏览器,输入http://master:8088
  4. 在YARN下尝试运行MapReduce例子程序
    搭好hadoop之后,想尝试跑一下例子程序,发现遇到8020端口连接失败错误
    网上各种方法都尝试了,包括更改core_site.xml里面的端口为8020,检查防火墙,网络配置都没有问题
    后来一个一个log看,发现是/mnt/disk1/yarn/dfs/name文件有问题
    把hdfs格式化久可以了
    bin/hadoop namenode -format
    运行pi例子程序
    bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar pi 20 10
    命令里的20 10分别指20个map10个reduce

Spark安装

  1. 安装Spark 从官网下载最新版Spark
    我下的是spark-1.0.2-bin-hadoop2.tgz,解压
  2. 配置Spark
    vi con/spark-env.sh
    添加一下内容
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    export SPARK_LOCAL_IP=master
    export SCALA_HOME=/usr/java/scala-2.10.3
    export JAVA_HOME=/usr/java/jdk1.7.0_67
    export HADOOP_HOME=/usr/java/hadoop-2.2.0
    export SPARK_LOCAL_DIR=/usr/java/spark-1.0.2-bin-hadoop2
    export SPARK_JAVA_OPTS="-Dspark.storage.blockManagerHeartBeatMs=60000 -Dspark.local.dir=$SPARK_LOCAL_DIR -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:$SPARK_HOME/logs/gc.log -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=60"
    export SPARK_MASTER_IP=master
    export SPARK_MASTER_PORT=7077
    export SPARK_WORKER_CORES=1
    export SPARK_WORKER_MEMORY=2g
    export SPARK_WORKER_PORT=9090
    export SPARK_WORKER_WEBUI_PORT=9099
    在slave文件下填上slave主机名:
    master
  3. 启动Spark
    sbin/start-all.sh
  4. 验证Spark 输入命令jps,可以看到打出的JVM程序
    1
    2
    3
    4
    5
    6
    8566 SecondaryNameNode
    8955 NodeManager
    8082 NameNode
    17022 Jps
    8733 ResourceManager
    8296 DataNode
    进入Spark的Web管理页面:
    master:8080