在Linux集群上安装与配置Spark
下面介绍如何在Linux集群上安装与配置Spark。
1.安装JDK
安装JDK大致分为下面4个步骤。
1)用户可以在Oracle JDK的官网下载相应版本的JDK,本例以JDK 1.7.0_25为例,官网地址
为http://www.oracle.com/technetwork/java/javase/downloads/index.html。
2)下载后,在解压出的JDK的目录下执行bin文件。
tar -zxvf jdk-7u25-linux-x64.tar.gz
3)配置环境变量,在/etc/profile增加以下代码。
JAVA_HOME=/home/chengxu/jdk1.6.0_38
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
4)使profile文件更新生效。
source /etc/profile
2.安装Scala
Scala官网提供各个版本的Scala,用户需要根据Spark官方规定的Scala版本进行下载和
安装。 Scala官网地址为http://www.scala-lang.org/download/2.11.7.html。
以Scala-2.10为例进行介绍。
1)下载scala-2.11.7.tgz。
2)在目录下解压:sc
tar -zxvf scala-2.11.7.tgz
3)配置环境变量,在/etc/profile中添加下面的内容。
export SCALA_HOME= /home/hadoop/scala
export PATH=${SCALA_HOME}/bin:$PATH
4)使profile文件更新生效。
./etc/profile
3.配置SSH免密码登录
ssh-keygen-trsa
2)打印日志执行以下命令。
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/*回车,设置默认路径*/
Enter passphrase (empty for no passphrase):
/*回车,设置空密码*/
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
如果是root用户,则在/root/.ssh/目录下生成一个私钥id_rsa和一个公钥id_rsa.pub。
把Master上的id_rsa.pub文件追加到Worker的authorized_keys内,以
172.20.14.144(Worker)节点为例。
3)复制Master的id_rsa.pub文件。
scp id_rsa.pub [email protected]:/home
/*可使用pssh对全部节点分发*/
4)登录172.20.14.144(Worker节点),执行以下命令。
cat /home/id_rsa.pub >> /root/.ssh/authorized_keys
/*可使用pssh对全部节点分发*/
其他的Worker执行同样的操作。
注意:配置完毕,如果Master仍然不能访问Worker,可以修改Worker的
authorized_keys文件的权限,命令为chmod 600 authorized_keys。
4.安装Hadoop
下面讲解Hadoop的安装过程和步骤。
(1)下载hadoop-2.2.0
1)选取一个Hadoop镜像网址,下载Hadoop(官网地址为
http://hadoop.apache.org/)。
$ wgethttp://www.trieuvan.com/apache/hadoop/common/
hadoop-2.2.0/hadoop-2.2.0.tar.gz
2)解压tar包。
$ sudo tar-vxzf hadoop-2.2.0.tar.gz -C /usr/local
$ cd /usr/local
$ sudo mv hadoop-2.2.0 hadoop
$ sudo chown -R hduser:hadoop hadoop
(2)配置Hadoop环境变量
1)编辑profile文件。
vi /etc/profile
2)在profile文件中增加以下内容。
export JAVA_HOME=/usr/lib/jvm/jdk/
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
通过如上配置就可以让系统找到JDK和Hadoop的安装路径。
(3)编辑配置文件
1)进入Hadoop所在目录/usr/local/hadoop/etc/hadoop。
2)配置hadoop-env.sh文件。
export JAVA_HOME=/usr/lib/jvm/jdk/
3)配置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:/home/tmp</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>
4)配置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:8032</value>
</property>
/*调度器的端口*/
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value> Master1:8030</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>
5)配置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>
</configuration>
(4)创建namenode和datanode目录,并配置其相应路径
1)创建namenode和datanode目录,执行以下命令。
$ mkdir /hdfs/namenode
$ mkdir /hdfs/datanode
2)执行命令后,再次回到目录/usr/local/hadoop/etc/hadoop,配置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:/hdfs/namenode</value>
</property>
/*配置datanode的数据存储目录*/
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/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>
(5)配置Master和Slave文件
1)Master文件负责配置主节点的主机名。 例如,主节点名为Master,则需要在Master
文16件添加以下内容。
Master /*Master为主节点主机名*/
2)配置Slaves文件添加从节点主机名,这样主节点就可以通过配置文件找到从节点,
和从节点进行通信。 例如,以Slave1~Slave5为从节点的主机名,就需要在Slaves文件中添
加如下信息。
/Slave*为从节点主机名*/
Slave1
Slave2
Slave3
Slave4
Slave5
(6)将Hadoop的所有文件通过pssh分发到各个节点
执行如下命令。
./pssh -h hosts.txt -r /hadoop /
(7)格式化Namenode(在Hadoop根目录下)
./bin/hadoop namenode -format
(8)启动Hadoop
./sbin/start-all.sh
(9)查看是否配置和启动成功
如果在x86机器上运行,则通过jps命令,查看相应的JVM进程
2584 DataNode
2971 ResourceManager
3462 Jps
3179 NodeManager
2369 NameNode
2841 SecondaryNameNode
注意,由于在IBM JVM中没有jps命令,所以需要用户按照下面命令逐个查看。
ps-aux|grep *DataNode* /*查看DataNode进程*/
5.安装Spark
进入官网下载对应Hadoop版本的Spark程序包(见图2-1),官网地址为
http://spark.apache.org/downloads.html。
图2-1 Spark下载官网
截止到笔者进行本书写作之时,Spark已经更新到1.0版本。
以Spark1.0版本为例,介绍Spark的安装。
1)下载spark-1.0.0-bin-hadoop2.tgz。
2)解压tar-xzvf spark-1.0.0-bin-hadoop2.tgz。
3)配置conf/spark-env.sh文件
①用户可以配置基本的参数,其他更复杂的参数请见官网的配置(Configuration)页
面,Spark配置(Configuration)地址为:
http://spark.apache.org/docs/latest/configuration.html。
②编辑conf/spark-env.sh文件,加入下面的配置参数。
export SPARK_WORKER_MEMORY=7g
export SCALA_HOME=/home/hadoop/scala
export JAVA_HOME=/usr/jdk1.7.0_25
export SPARK_MASTER=172.16.2.29
export SPARK_LOCAL_IP=172.16.2.29
export HADOOP_HOME=/home/hadoop/hadoop
export SPARK_HOME=/home/hadoop/spark
export SPARK_LIBARY_PATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$HADOOP_HOME/lib/native
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
参数SPARK_WORKER_MEMORY决定在每一个Worker节点上可用的最大内存,增加这个
数值可以在内存中缓存更多数据,但是一定要给Slave的操作系统和其他服务预留足够的内
存。
需要配置SPARK_MASTER_IP和MASTER,否则会造成Slave无法注册主机错误。
4)配置slaves文件。
编辑conf/slaves文件,以5个Worker节点为例,将节点的主机名加入slaves文件中。
Slave1
Slave2
Slave3
Slave4
Slave5
6.启动集群
(1)Spark启动与关闭
1)在Spark根目录启动Spark。
./sbin/start-all.sh
2)关闭Spark。
./sbin/stop-all.sh
(2)Hadoop的启动与关闭
1)在Hadoop根目录启动Hadoop。
./sbin/start-all.sh
2)关闭Hadoop。
./sbin/stop-all.sh
(3)检测是否安装成功
1)正常状态下的Master节点如下。
-bash-4.1# jps
23526 Jps
2127 Master
7396 NameNode
7594 SecondaryNameNode
7681 ResourceManager
2)利用ssh登录