全部博文(2759)
分类: HADOOP
2014-07-19 09:25:06
原文地址:Spark On Yarn环境搭建 作者:bl竹子
一、 基本布局
1、 服务器分布:
10.168.9.240 主名字节点,同时为数据节点
10.168.9.241 备名字节点,同时数据节点
10.168.9.242 数据节点
2、 HOSTS设置:
10.168.9.240 namenode1
10.168.9.241 namenode2
10.168.9.242 datanode1
注意:hostname不能使localhost(127.0.0.1),应该设成本机具体IP,并且要保持/etc/hosts与/etc/sysconf/network一致
3、 SSH免密码登录:
具体参见脚本:
点击(此处)折叠或打开
注:权限对ssh的设置影响很大
下面的各个操作,可以只在一台机器上进行,然后利用ssh的scp拷贝到其它机器上,命令格式为:scp ~/.ssh/id_rsa.pub root@namenode2: ~/.ssh/,其中root不是用户名,是权限的意思。
二、安装一些相关软件(主要是为了编译hadoop和开发环境搭建)
安装的软件有:JDK(1.8版本存在问题)、MAVEN、PROTOBUF、cmake、ncurses和openss以及hadoop。我在进行安装时都是以共享连接的形式ln -s到/usr/local/目录下的,注意此时要用绝对路径。
三、Hadoop YARN 分布式集群配置
1、 添加相应的环境变量:
# vim /etc/profile
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_PID_DIR=/data/hadoop/pids
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib/native"
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HDFS_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# source /etc/profile
2、 创建(主要是为hadoop的tmp.dir配置路径,不配也行试过)
mkdir -p $HADOOP_HOME/{pids,storage}
mkdir -p $HADOOP_HOME/{pids,storage1}
mkdir -p $HADOOP_HOME/storage/{hdfs,tmp}
mkdir -p $HADOOP_HOME/torage/hdfs/{name,data}
3、 配置 core-site.xml(vi $HADOOP_HOME/etc/hadoop/core-site.xml)
点击(此处)折叠或打开
4、 配置 hdfs-site.xml(vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml)
点击(此处)折叠或打开
5、 配置mapred-site.xml(vi $HADOOP_HOME/etc/hadoop/mapred-site.xml)
点击(此处)折叠或打开
6、 配置yarn-site.xml(vi $HADOOP_HOME/etc/hadoop/yarn-site.xml)
点击(此处)折叠或打开
7、 配置 hadoop-env.sh、mapred-env.sh、yarn-env.sh(在开头添加)
1)、文件路径:
$HADOOP_HOME/etc/hadoop/hadoop-env.sh
$HADOOP_HOME/etc/hadoop/mapred-env.sh
$HADOOP_HOME/etc/hadoop/yarn-env.sh
2)、添加内容
export JAVA_HOME=/usr/local/jdk
export CLASS_PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_PID_DIR=/data/hadoop/pids
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib/native"
export HADOOP_PREFIX=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HDFS_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
8、 数据slaves节点配置(放在此处的节点为slaves节点)
位置:vi $HADOOP_HOME/etc/hadoop/slaves
9、 Hadoop简单测试:(都在master节点上进行)
hadoop namenode -format
tart-dfs.sh
#看看相应的resourcemanager和datanode等节点是否起来。
hdfs与mapreduce测试
#创建个目录: /usr/rocketzhang
hdfs dfs -mkdir -p /user/rocketzhang
#上传一个本地文件
hdfs dfs -put bin/hdfs.cmd /user/rocketzhang
#WordCount程序 测试
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /user/rocketzhang /user/out
注意:在此过程中经常出现两种错误:无法连接和datanode节点没起来,大多数是因为防火墙没关闭和需要删除core*.xml中定义tmp.dir目录下的current并重新format。
查看监控页面URL:(我搭建时的url),看是否可以正常显示。
二、 Spark 分布式集群配置
1、 下载相关软件:
kbcqa49mib13.cloudfront.net/spark-0.8.1-incubating-bin-hadoop2.tgz
安装并设置相关的环境变量,装完之后利用ln -s命令将其link到/user/local
录下,注意此时最好用绝对路径
2、 对spark进行操作,如下:
cd /usr/local/spark/conf
vi spark-env.sh
export JAVA_HOME=/usr/local/jdk
export SCALA_HOME=/usr/local/scala
export HADOOP_HOME=/usr/local/hadoop
mv spark-env.sh.template spark-env.sh
设置slaves,打开slaves,添加datanode节点
3、 启动Yarn,有三种方式:start-all.sh(start-dfs.sh、start-yarn.sh)、start-yarn.sh或yarn-demo.sh
4、 简单测试:
还是提供过URL打开和上面一样,显示如下界面:
切换到/usr/local/spark目录
1)、本地测试:
./run-example org.apache.spark.examples.SparkPi local
2)、普通集群模式
./run-example org.apache.spark.examples.SparkPi spark://namenode1:7077
./run-example org.apache.spark.examples.SparkLR spark://namenode1:7077
./run-example org.apache.spark.examples.SparkKMeans spark://namenode1:7077 file:/usr/local/spark/kmeans_data.txt 2 1
注:此处不能用namenode1,要用具体IP地址
运行完之后,url界面会有如下显示:
5、 结合HDFS的集群模式
hadoop fs -put README.md / /user/rocketzhang(不能用相对路径,无法识别)
MASTER=spark://10.168.9.240:7077 ./spark-shell
scala> val file = sc.textFile("hdfs://namenode1:9000/user/root/README.md")
scala> val count = file.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_+_)
scala> count.collect()
scala> :quit
本文出自:http://blog.chinaunix.net/uid/28311809/abstract/1.html