# Hadoop2.6.0上的Spark1.5.2集群搭建指南 ## 前言 在大数据技术生态中,Hadoop和Spark是两个核心组件。Hadoop提供了可靠的分布式存储(HDFS)和计算框架(MapReduce),而Spark则以其内存计算和高效的DAG执行引擎著称。本文将详细介绍在Hadoop 2.6.0环境中搭建Spark 1.5.2集群的全过程。 ## 环境准备 ### 硬件要求 - **至少3台服务器**(1个Master,2个Worker节点) - **每台机器建议配置**: - CPU: 4核以上 - 内存: 8GB以上(Spark对内存需求较高) - 磁盘: 50GB以上可用空间 - 网络: 千兆网卡 ### 软件要求 - **操作系统**: Linux(推荐CentOS 7.x或Ubuntu 16.04) - **Java环境**: JDK 1.7或更高版本 - **Hadoop版本**: 2.6.0 - **Spark版本**: 1.5.2 - **SSH**: 节点间需配置免密登录 ## 第一步:基础环境配置 ### 1. 系统设置 ```bash # 所有节点执行 sudo hostnamectl set-hostname master # 主节点 sudo hostnamectl set-hostname worker1 # 工作节点1 sudo hostnamectl set-hostname worker2 # 工作节点2 # 编辑/etc/hosts文件 192.168.1.100 master 192.168.1.101 worker1 192.168.1.102 worker2
sudo useradd hadoop sudo passwd hadoop sudo usermod -aG wheel hadoop # CentOS sudo usermod -aG sudo hadoop # Ubuntu
# 在master节点执行 su - hadoop ssh-keygen -t rsa ssh-copy-id hadoop@master ssh-copy-id hadoop@worker1 ssh-copy-id hadoop@worker2
wget https://archive.apache.org/dist/hadoop/core/hadoop-2.6.0/hadoop-2.6.0.tar.gz tar -xzvf hadoop-2.6.0.tar.gz -C /opt/ ln -s /opt/hadoop-2.6.0 /opt/hadoop
编辑~/.bashrc
文件:
export HADOOP_HOME=/opt/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_YARN_HOME=$HADOOP_HOME export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
core-site.xml:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/opt/hadoop/tmp</value> </property> </configuration>
hdfs-site.xml:
<configuration> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/opt/hadoop/hdfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/opt/hadoop/hdfs/data</value> </property> </configuration>
mapred-site.xml:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
yarn-site.xml:
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> </configuration>
编辑$HADOOP_HOME/etc/hadoop/slaves
文件:
worker1 worker2
# 在master节点执行 hdfs namenode -format start-dfs.sh start-yarn.sh
验证集群状态:
jps # 应该看到NameNode、ResourceManager等进程 hdfs dfsadmin -report
wget https://archive.apache.org/dist/spark/spark-1.5.2/spark-1.5.2-bin-hadoop2.6.tgz tar -xzvf spark-1.5.2-bin-hadoop2.6.tgz -C /opt/ ln -s /opt/spark-1.5.2-bin-hadoop2.6 /opt/spark
编辑~/.bashrc
文件:
export SPARK_HOME=/opt/spark export PATH=$PATH:$SPARK_HOME/bin
spark-env.sh:
cp $SPARK_HOME/conf/spark-env.sh.template $SPARK_HOME/conf/spark-env.sh
编辑内容:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export SPARK_MASTER_IP=master export SPARK_WORKER_MEMORY=4g export SPARK_WORKER_CORES=2 export SPARK_LOCAL_DIRS=/opt/spark/tmp
slaves:
cp $SPARK_HOME/conf/slaves.template $SPARK_HOME/conf/slaves
编辑内容:
worker1 worker2
scp -r /opt/spark-1.5.2-bin-hadoop2.6 hadoop@worker1:/opt/ scp -r /opt/spark-1.5.2-bin-hadoop2.6 hadoop@worker2:/opt/
$SPARK_HOME/sbin/start-all.sh
验证集群状态:
jps # 应该看到Master和Worker进程
访问Web UI:http://master:8080
spark-submit --class org.apache.spark.examples.SparkPi \ --master spark://master:7077 \ $SPARK_HOME/examples/jars/spark-examples_2.10-1.5.2.jar 100
hdfs dfs -put $SPARK_HOME/README.md /spark-test/ spark-shell --master spark://master:7077 # 在Spark Shell中执行 val textFile = sc.textFile("hdfs://master:9000/spark-test/README.md") textFile.count()
如果遇到端口冲突,可以修改以下配置:
# 在spark-env.sh中 export SPARK_MASTER_WEBUI_PORT=8989
调整Executor内存:
spark-submit --executor-memory 2G ...
检查: - 防火墙状态 - /etc/hosts配置 - SSH免密登录是否配置正确
内存配置:
SPARK_WORKER_MEMORY
spark.executor.memory
和spark.driver.memory
并行度优化:
spark.default.parallelism
(建议为集群总核数的2-3倍)数据本地性:
hdfs://
路径而非本地路径序列化配置:
conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
通过本文的详细步骤,您已经成功在Hadoop 2.6.0上搭建了Spark 1.5.2集群。虽然这两个版本相对较旧,但这一过程对于理解Hadoop与Spark的集成原理仍然具有重要价值。对于生产环境,建议考虑更新版本的组合以获得更好的性能和安全性。
命令 | 描述 |
---|---|
start-all.sh | 启动Spark集群 |
stop-all.sh | 停止Spark集群 |
spark-shell | 启动交互式Shell |
spark-submit | 提交Spark作业 |
”`
注:本文约2950字,详细介绍了从环境准备到集群验证的完整过程,包含了配置示例、命令操作和常见问题解决方案。实际部署时请根据具体环境调整参数。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。