您的位置:首页 > 运维架构

Spark-1.4.0单机部署(Hadoop-2.6.0采用伪分布式)【已测】

2015-08-26 19:24 531 查看

  目前手上只有一个机器,就先拿来练下手(事先服务器上没有安装软件)尝试一下Spark的单机部署。

  几个参数:

  JDK-1.7+

  Hadoop-2.6.0(伪分布式);

  Scala-2.10.5;

  Spark-1.4.0;

  下面是具体的配置过程

安装JDK 1.7+

【下载网址】http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

环境变量设置(最好不要采用openjdk):

export JAVA_HOME=/usr/java/java-1.7.0_71
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar


更新重启环境变量

$ source /etc/profile


测试

$ java -version


下载安装scala-2.10.5

【下载网址】http://www.scala-lang.org/download/2.10.5.html

下载对对对应的压缩包

$ tar -zxf scala-2.10.5.tgz
$ sudo mv scala-2.10.5 /usr/local


配置环境变量:

export SCALA_HOME=/usr/local/scala-2.11.4


export PATH=$SCALA_HOME/bin:$PATH


更新启动环境变量

source /etc/profile


测试scala安装是否成功

$ scala -version


【亲测】安装Hadoop(需要修改Hadoop的情况下,手动编译)

【安装Hadoop的参考网址】http://qindongliang.iteye.com/blog/2222145

安装依赖

sudo yum install -y autoconf automake libtool git  gcc gcc-c++  make cmake openssl-devel,ncurses-devel bzip2-devel


安装Maven3.0+

【下载网址】http://archive.apache.org/dist/maven/maven-3/3.0.5/binaries/

解压

tar -xvf  apache-maven-3.0.5-bin.tar.gz


移动文件

mv -rf apache-maven-3.0.5 /usr/local/


配置环境变量

MAVEN_HOME=/usr/local/apache-maven-3.0.5
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin


使生效

source /etc/profile


检查是否安装成功
mvn -v


安装ant1.8+

【下载网址】http://archive.apache.org/dist/ant/binaries/

环境变量

export ANT_HOME=/usr/local/apache-ant-1.8.4
export PATH=$ANT_HOME/bin:$PATH


测试

ant -version


安装 protobuf-2.5.0.tar.gz

解压

tar xvf protobuf-2.5.0.tar.gz


安装

cd protobuf-2.5.0


./configure --prefix=/usr/local/protobuf


make


nake install


环境变量

export PATH=$PATH:/usr/local/protobuf/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib


测试

protoc --version


如果输出
libprotoc 2.5.0
表示安装成功。

安装snappy1.1.0.tar.gz(可选选项,如果需要编译完的Hadoop支持Snappy压缩,需要此步骤)

安装

./configure --prefix=/usr/local/snappy
#指定的一个安装目录

make


make install


安装hadoop-snappy

git下载地址

git clone https://github.com/electrum/hadoop-snappy.git[/code] 
打包

下载完成后

cd hadoop-snappy


执行maven打包命令

mvn package -Dsnappy.prefix=/home/search/snappy


验证



 这个目录就是编译后的snappy的本地库,在

hadoop-snappy/target/hadoop-snappy-0.0.1-SNAPSHOT-tar/hadoop-snappy-0.0.1-SNAPSHOT/lib
目录下,有个
hadoop-snappy-0.0.1-SNAPSHOT.jar
,在hadoop编译后,需要拷贝到
$HADOOP_HOME/lib
目录下。

 【备注】整个过程中使用到的包都放在/root/下面。

安装Hadoop

安装(下载hadoop-2.6.0-src.tar.gz是hadoop的源码)

【下载网址】http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.6.0/

【也可以直接获取】
wget http://archive-primary.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.4.1-src.tar.gz[/code] 
解压

tar -zxvf hadoop-2.6.0-cdh5.4.1-src.tar.gz


解压后进入根目录,执行下面这个编译命令,就能把snappy库绑定到hadoop的本地库里面,这样就可以在所有的机器上跑了

mvn clean package -DskipTests -Pdist,native -Dtar -Dsnappy.lib=(hadoop-snappy里面编译后的库地址)   -Dbundle.snappy


 中间会报一些异常,无须关心,如果报异常退出了,就继续执行上面这个命令,直到成功为止,一般速度会跟你的网速有关系,大概40分钟左右,最后会编译成功。

【最终选择】安装Hadoop(无需修改Hadoop时直接下载编译好的Hadoop文件)

安装(下载已经编译好的hadoop-2.6.0.tar.gz)

【下载网址】http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.6.0/

解压安装在
/usr/local/


改名为hadoop,即最终路径:
/usr/local/hadoop
下同。

单机部署Hadoop(伪分布式)

Hadoop 的配置文件位于
/usr/local/hadoop/etc/hadoop/
中(很多的xml文件),伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml。

修改配置文件 core-site.xml (vim /usr/local/hadoop/etc/hadoop/core-site.xml)

将当中的

<configuration>
</configuration>


修改为下面配置:

<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>


修改配置文件 hdfs-site.xml(同理)

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>


【注意】不说明的话都是目录的起始位置都是:
hadoop/


配置完成后,执行 namenode 的格式化:

bin/hdfs namenode -format


成功的话,会看到
successfully formatted
的提示,且输出信息的倒数第5行的提示如下,Exitting with status 0 表示成功,若为 Exitting with status 1 则是出错。若出错,可试着加上 sudo, 既
sudo bin/hdfs namenode -format
再试试看。

开启NameNode、DataNode守护进程

sbin/start-dfs.sh


【注意】若你使用的是 Hadoop 2.4.1 64位,则此时可能会出现一连串的warn提示,如
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
这个提示,这些warn提示可以忽略,不会影响正常使用。

查看进程

输入
jps
即可

成功启动则会列出如下进程: NameNode、DataNode和SecondaryNameNode

Hadoop-webUI

在浏览器中输入
http://localhost:50070
(localhost或者是服务器ip)

【注意】如无法访问,先检查防火墙是否是关闭状态(应当是关闭状态)。

注意(配置过程中遇到)

在这一步以及后面启动 Hadoop 时若提示
Error: JAVA_HOME is not set and could not be found.
的错误,则需要在文件
hadoop/etc/hadoop/hadoop-env.sh
中设置 JAVA_HOME 变量,即找到
export JAVA_HOME=${JAVA_HOME} 这一行,改为 export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
(就是之前设置的JAVA_HOME位置),再重新尝试即可。

关闭NameNode、DataNode守护进程

sbin/stop-dfs.sh


单机部署Spark

下载

wget http://archive.apache.org/dist/spark/spark-1.4.0/spark-1.4.0-bin-hadoop2.6.tgz[/code] 
解压并修改名字为spark

环境变量

export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin


配置Spark环境变量

cd $SPARK_HOME/conf


cp spark-env.sh.template spark-env.sh


vim spark-env.sh


添加如下代码:

export JAVA_HOME=/usr/java/latest
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export SCALA_HOME=/usr/local/scala-2.10.5
export SPARK_HOME=/usr/local/spark
export SPARK_MASTER_IP=127.0.0.1
export SPARK_MASTER_PORT=7077
export SPARK_MASTER_WEBUI_PORT=8099
export SPARK_WORKER_CORES=3
export SPARK_WORKER_INSTANCES=1
export SPARK_WORKER_MEMORY=10G
export SPARK_WORKER_WEBUI_PORT=8081
export SPARK_EXECUTOR_CORES=1
export SPARK_EXECUTOR_MEMORY=1G
#export SPARK_CLASSPATH=/opt/hadoop-lzo/current/hadoop-lzo.jar
#export SPARK_CLASSPATH=$SPARK_CLASSPATH:$CLASSPATH
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$HADOOP_HOME/lib/native


配置Slave

cp slaves.template slaves


vim slaves


添加以下代码(默认就是localhost):

localhost


因为是单机ssh免登陆不再赘述

启动Spark Master

目录:
cd $SPARK_HOME/sbin/


./start-master.sh


启动Spark Slave

目录:
cd $SPARK_HOME/sbin/


./start-slaves.sh
(注意是slaves)

启动Spark-shell(application)

./spark-shell –master spark://127.0.0.1:7077

Spark-webUI

http://localhost:8099
(localhost或者是服务器ip)

如下所示:



关闭master和slave

目录:
cd $SPARK_HOME/sbin/


./stop-master.sh


./stop-slaves.sh


测试

Spark-shell测试

./spark-shell
...
scala> val days = List("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday")
days: List[String] = List(Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday)
scala> val daysRDD =sc.parallelize(days)
daysRDD: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[0] at parallelize at <console>:14
scala>daysRDD.count()
scala>res0:Long =7


脚本测试

本地模式

./bin/run-example org.apache.spark.examples.SparkPi 2 spark://localhost:7077


./bin/run-example SparkPi 10 --master local[2]


standalone模式

【注意】127.0.0.1 && *.jar的路径

./spark-submit  --class org.apache.spark.examples.SparkPi --master spark://127.0.0.1:7077 ../lib/spark-examples-1.4.0-hadoop2.6.0.jar  100


yarn测试(cluster模式和client模式)

【注意】*.jar的路径

./spark-submit  --class org.apache.spark.examples.SparkPi --master yarn-cluster ../lib/spark-examples*.jar  10


http://localhost:8088/
(localhost可以是服务器地址)

./spark-submit  --class org.apache.spark.examples.SparkPi --master yarn-client ../lib/spark-examples*.jar  10


访问
localhost:8088
结果如下:



数据测试

写一个简单的shell准备数据,之后进行word count测试。

getNum(){
c=1
while [[ $c -le 5000000 ]]
do
echo $(($RANDOM/500))
((c++))
done
}
for i in `seq 30`
do
getNum >> ${i}.txt &
# getNum
done
wait
echo "------------------DONE-----------------"
cat [0-9]*.txt > num.txt


创建hdfs文件目录(执行文件位于hadoop/bin/hdfs;hdfs根目录是
hdfs://localhost:9000


执行命令:
./bin/hdfs dfs -mkdir -p /user/hadoop/datatest


向创建的hdfs文件中写入数据(脚本生成的数据)

执行命令:
./bin/hdfs dfs -put /root/num.txt /user/hadoop/datatest


scala测试代码:

执行命令:
spark/bin/Spark-shell


scala> val file = sc.textFile("hdfs://localhost:9000/user/hadoop/datatest/num.txt")
scala> val count = file.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_+_)
scala> count.sortBy(_._2).map(x => x._1 + "\t" + x._2).saveAsTextFile("hdfs://localhost:9000/user/hadoop/datatest/numCount")


执行hadoop相关操作命令:(hadoop/bin/)

./hadoop fs -cat hdfs://localhost:9000/user/hadoop/datatest/numCount/p*|sort -k2n


测试结果如下:



SparkR安装

SparkR遵循Apache 2.0 License,除了要求用户在他们机器上安装R和Java之外,不需要依赖任何外部的东西!

  【注意】在编译Spark的时候,如果需要使用到SparkR,可以在编译时候加上-PsparkRMaven配置属性。如果使用下载的编译好的Spark应该就没有这样的问题。

【下载网站】

http://cran.r-project.org/src/base/R-3

解压安装

./configure --prefix=/usr/local/R


make && make install


设置环境变量

export R_HOME=/usr/local/R


export PATH=$R_HOME:$PATH


安装R之后(已经安装了java)就可以了。进入
spark/bin
执行
sparkR
即可进入sparkR状态。如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: