一、环境准备
1. 机器: 3 台虚拟机
机器 | 角色 |
l-qta3.sp.beta.cn0 | NameNode,ResourceManager,spark的master |
l-querydiff1.sp.beta.cn0 | DataNode,NodeManager,Worker |
l-bgautotest2.sp.beta.cn0 | DataNode,NodeManager,Worker |
2. jdk版本
[xx@l-qta3.sp.beta.cn0 ~]$ java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
3. 准备工作
1)ssh 免密登陆: 集群中的机器需要相互免密访问。参考:http://www.cnblogs.com/lijingchn/p/5580263.html
2)hadoop 2.6.5 binary 下载。地址:http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.6.5/hadoop-2.6.5.tar.gz
4. 解压 hadoop-2.6.5.tar.gz
将hadoop-2.6.5.tar.gz解压缩到 /home/q/
cmd : tar -xzvf hadoop-2.6.5.tar.gz -C /home/q/
5. 修改配置文件
配置文件都在 etc/hadoop/下,这些配置文件里面都有样例,有些是必须设置的。官网配置的介绍:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/ClusterSetup.html
5.1 修改hadoop-env.sh
export JAVA_HOME=xxx -- java 的安装目录
5.2 修改yarn-env.sh
export JAVA_HOME=xxxx
5.3 修改slaves 配置slave的机器名 (这些机器需要能按机器名ping通,即要需要/etc/hosts 文件,按 ip 空格 机器名 的格式设置。)
slave1
slave2
5.4 配置core-site.xml (从core-site.xml.example copy 过来一个,重命名即可。)
<configuration>
<!-- 文件系统的地址,jdycluster 对应的是namenode 的地址,这里需要将namenode 的hosts 映射到这个名称。 -->
<property> <name>fs.defaultFS</name> <value>hdfs://jdycluster</value> </property> <property> <name>io.file.buffer.size</name> <value>4194304</value> </property> <property> <name>fs.trash.interval</name> <value>1440</value> </property> <property> <name>io.compression.codecs</name> <value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.BZip2Codec,org .apache.hadoop.io.compress.SnappyCodec,com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec</value> </property> <property> <name>io.compression.codec.lzo.class</name> <value>com.hadoop.compression.lzo.LzoCodec</value> </property> <property> <name>ha.failover-controller.cli-check.rpc-timeout.ms</name> <value>60000</value> </property> <property> <name>ipc.client.connect.timeout</name> <value>60000</value> </property> <!-- to solve "impersonate" issue --> <property> <name>hadoop.proxyuser.jdydev.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.jdydev.groups</name> <value>*</value> </property> </configuration>
5.5 配置hdfs-site.xml
<configuration> <property> <name>dfs.nameservices</name> <value>jdycluster</value> </property>
<!-- 目录需要自己建好 --> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/q/hadoop-2.6.5/dfs/name</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.blocksize</name> <value>268435456</value> </property> <property> <name>dfs.namenode.handler.count</name> <value>100</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> <!--- 目录需要自己建好 ---> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/q/hadoop-2.6.5/dfs/data</value> </property> <property> <name>dfs.ha.namenodes.jdycluster</name> <value>nn1</value> </property> <property> <name>dfs.namenode.rpc-address.jdycluster.nn1</name> <value>l-qta3.sp.beta.cn0:8020</value> </property> <property> <name>dfs.namenode.http-address.jdycluster.nn1</name> <value>l-qta3.sp.beta.cn0:50070</value> </property>
<property> <name>dfs.client.failover.proxy.provider.jdycluster</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> </configuration>
5.6 配置mapred-site.xml, 这里都是map-reduce 的参数
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.map.memory.mb</name> <value>1536</value> </property> <property> <name>mapreduce.map.java.opts</name> <value>-Xmx1024M</value> </property> <property> <name>mapreduce.reduce.memory.mb</name> <value>3072</value> </property> <property> <name>mapreduce.reduce.java.opts</name> <value>-Xmx2560M</value> </property> <property> <name>mapreduce.task.io.sort.mb</name> <value>512</value> </property> <property> <name>mapreduce.task.io.sort.factor</name> <value>100</value> </property> <property> <name>mapreduce.reduce.shuffle.parallelcopies</name> <value>50</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>l-qta3.sp.beta.cn0:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>l-qta3.sp.beta.cn0:19888</value> </property> <property> <name>mapreduce.jobhistory.intermediate-done-dir</name> <value>/mr-history/tmp</value> </property> <property> <name>mapreduce.jobhistory.done-dir</name> <value>/mr-history/done</value> </property>
5.7 配置yarn-site.xml
<configuration> <!-- Site specific YARN configuration properties --> <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> <property> <name>yarn.resourcemanager.address</name> <value>l-qta3.sp.beta.cn0:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>l-qta3.sp.beta.cn0:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>l-qta3.sp.beta.cn0:8035</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>l-qta3.sp.beta.cn0:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>l-qta3.sp.beta.cn0:8088</value> </property> </configuration>
5.8 配置slaves, 这里配置的就是DataNode,NodeManager,Worker的机器。
l-qta3.sp.beta.cn0
l-bgautotest2.sp.beta.cn0
5.9 scp到所有salve机器相同目录下
scp -r /home/q/hadoop-2.6.5 xx@slave[1-2]:/home/q/
6 启动hadoop 集群
6.1 格式化NameNode
在NameNode执行以下操作
cd /home/q/hadoop-2.6.5/bin sudo bin/hadoop namenode –format
6.2 启动hadoop集群
方式1:
sbin/start-dfs.sh #启动HDFS sbin/start-yarn.sh #启动资源管理器
方式2:
sbin/start-all.sh
注意: 在启动过程中,启动脚本会依次ssh方式登陆各台机器,所以即使是启动本机的服务也会ssh,这时候 本机也要做免密登陆,否则NameNode会起不来。
6.3 验证集群是否启动
在NameNode上执行 jps
返回如下:
6996 ResourceManager
6611 NameNode
6412 Jps
在DataNode上执行 jps
返回如下:
22285 NodeManager
22151 DataNode
说明已经启动成功。进入Hadoop的Web管理页面:http://l-qta3.sp.beta.cn0:50070/
7. 安装spark
首先到spark官网下载和你安装的hadoop 版本匹配的spark 版本。http://spark.apache.org/downloads.html
7.1 解压缩 spark-2.0.2-bin-hadoop2.6.tgz
sudo tar -zxvf spark-2.0.2-bin-hadoop2.6.tgz -C /home/q/
7.2 配置spark-env.sh
cd /home/q/spark-2.0.2-bin-hadoop2.6/conf cp spark-env.sh.template spark-env.sh sudo vi spark-env.sh
export JAVA_HOME=/home/q/java/default
export HADOOP_HOME=/home/q/hadoop-2.6.5
export HADOOP_CONF_DIR=/home/q/hadoop-2.6.5/etc/hadoop/
export SPARK_LOCAL_DIRS=/home/q/spark-2.0.2-bin-hadoop2.6
export SPARK_CLASSPATH=/home/q/spark-2.0.2-bin-hadoop2.6/bin
export SPARK_CLASSPATH=$SPARK_CLASSPATH:/home/q/hadoop-2.6.5/share/hadoop/mapreduce/lib/hadoop-lzo-0.4.20-SNAPSHOT.jar
export HIVE_CONF_DIR=/home/q/apache-hive-2.1.1-bin/conf
7.3 配置salves
vi slaves l-bgautotest2.sp.beta.cn0 l-querydiff1.sp.beta.cn
7.4 将spark的安装文件scp到slaves的相同目录下
scp -r /home/q/spark-2.0.2-bin-hadoop2.6 xx@slaves[1-2]:/home/q/
7.5 启动spark 集群
sbin/start-all.sh
7.6 验证是否启动spark集群
master 机器上执行 jps 返回中有: 11016 Master slave 机器上执行 jps: 返回中有: 6689 Worker
说明启动成功。
进入Spark的Web管理页面:http://l-qta3.sp.cn0:8080 .