hadoop+spark集群搭建
Posted 不负流年
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop+spark集群搭建相关的知识,希望对你有一定的参考价值。
hadoop+spark集群搭建
?
本次实验环境:两台hadoop+两台spark组成集群
?
环境准备:
?? ? ? ?1. 两个主机实现ssh无密钥认证,包括本机与本机的免密钥认证:
? ? ? ? ? ? ? ? ssh-keygren :生成一对密钥
? ? ? ? ? ? ? ? ssh-copy-id : 把公钥发给对方服务器
? ? ? ? ?2. 集群间需实现时间同步:
? ? ? ? ? ? ? ? ?ntpdate
? ? ? ? ?3. 配置主机名:? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ?192.168.133.128 master
? ? ? ? ? ? ? ? ?192.168.133.129 node
? ? ? ? ?4. 下载hadoop-spark压缩包,解压,尽量两台服务器的hadoop-spark安装路径是一致的
? ?
? ? ? ? ?5. 配置安装JAVA环境并配置JAVA和hadoop环境变量:
export JAVA_HOME=/usr/java/jdk1.8.0_51/
export HADOOP_HOME=/opt/hadoop-spark/hadoop/hadoop-2.9.1
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
安装hdoop集群:
?
? ? 在master主机上配置:
? ? ? ? cd $HADOOP_HOME/etc/hadoop/
? ? ? ? vi?core-site.xml
<configuration>
<!--配置HDFS的NameNode-->
????????????<property>
???????????? <name>fs.defaultFS</name>
???????????? <value>hdfs://master:9000</value>
????????????</property>
?
????????????<!--配置DataNode保存数据的位置-->
????????????<property>
???????????? <name>hadoop.tmp.dir</name>
???????????? <value>/opt/hadoop-spark/hadoop/hadoop-2.9.1/tmp</value>
????????????</property>
</configuration>
? ? ? ?
? ? ? ? ?vi hdfs-site.xml
<configuration>
<!--配置HDFS的冗余度-->
<property>
<name>dfs.replication</name>
????<value>1</value>
</property>
<!--配置是否检查权限-->
<property>
????<name>dfs.permissions</name>
????<value>false</value>
</property>
<!--配置namenode存储路径-->
<property>
????<name>dfs.namenode.name.dir</name>
????<value>file:///data/cluster_hadoop/hdfs/nn</value>
</property>
<!--配置datanode存储路径-->
<property>
????<name>dfs.datanode.data.dir</name>
????<value>file:///data/cluster_hadoop/hdfs/dn</value>
</property>
<!--配置second namenode的映像存储路径-->
<property>
????<name>fs.checkpoint.dir</name>
????<value>file:///data/cluster_hadoop/hdfs/snn</value>
</property>
<!--配置second namenode合并元数据时的临时编辑存储路径-->
<property>
????<name>fs.checkpoint.edits.dir</name>
????<value>file:///data/cluster_hadoop/hdfs/snn</value>
</property>
?
</configuration>
如果namenode,second namenode, datanode没有设置存储路径,则默认存储到$(hadoop.tmp.dir)路径下
? ?
? ? ? ? ? vi?yarn-site.xml:
<configuration>
<!--配置resourcemanager监听地址及端口-->
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<!--配置resourcemanager的调度器监听地址及端口,默认0.0.0.0:8030-->
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<!--NodeManager通过该地址向RM汇报心跳,领取任务等,默认0.0.0.0:8031-->
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<!--管理员的访问ResourceManager的地址端口,默认0.0.0.0:8033-->
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<!--配置resourcemanagerweb接口地址及端口,默认0.0.0.0:8088-->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>
</configuration>
? ? ? ? ? ?注意:yarn-site.xml里面的配置指明的是master的地址,没有解析域名的可以用IP
?
vi?mapred-site.xml
<configuration>
<!--配置MR运行的框架-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
此文件默认没有,但是在该目录下有个模板文件为mapred-site.xml.template,可以复制一份为mapred-site.xml
? ? ?
? ? ? vi slaves
master
node
? ? ? ? 此配置文件用来指明数据节点的,本次使用master服务器既是master节点也是node节点
?
? ? ? ? 新建hadoop存储路径:
? ? ? ? mkdir -p /data/cluster_hadoop/hdfs/nn
? ? ? ? mkdir -p /data/cluster_hadoop/hdfs/snn
? ? ? ? mkdir -p /data/cluster_hadoop/hdfs/dn
?
? ? 配置slave节点:
? ? ? ? slave节点的配置与master节点的配置相同,只是启动的服务不同,把以上编辑的文件拷贝到slave节点相同的位置就可以了
? ? ? ? 配置存储路径:
? ? ? ? mkdir -p /data/cluster_hadoop/hdfs/nn
? ? ? ? mkdir -p /data/cluster_hadoop/hdfs/snn
? ? ? ? mkdir -p /data/cluster_hadoop/hdfs/dn
?
格式化hdfs:
? ? ? ? hdfs namenode -format
? ? ? ? ?其输出结果会有大量的信息,如显示类似‘INFO commmon.Storage:Storage dirctory /PATH/TO/NN has been successfully formatted‘的结果表示格式化操作已经完成
启动Hadoop进程:
? ? ? ? (1)分别启动,分别手动启动master的服务以及slave服务;
? ? ? ? ? 主要用到两个脚本:hadoop-daemon.sh和yarn-daemons.sh。
? ? ? ? (2)master自动启动自身的服务以及slave的服务(需要配置master与slave能进行免密钥认证)
? ? ? ? ?这里用第二种方法:
? ? ? ? ? ./sbin/start-dfs.sh
? ? ? ? ??./sbin/start-yarn.sh
master会启动进程:
[root@accur sbin]# jps
23137 ResourceManager
17224 DataNode
23753 NodeManager
20942 NameNode
17518 SecondaryNameNode
slave会启动进程:
[root@accur sbin]# jps
7089 DataNode
9999 NodeManager
hadoop相关web接口:
http://master:8088/? #8088端口冲突了会自动+1,或者编辑start-master.sh修改端口
?
spark集群安装:
? ? ? ? ?在两台机器上spark环境变量:
? ? ? ? ? ? ? ? ?vi conf/spark-env.sh? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? export SPARK_DIST_CLASSPATH=$(/opt/hadoop-spark/hadoop/hadoop-2.9.1/bin/hadoop classpath)
? ? ? ? ? ? ? ? ? ? ? ? ? export JAVA_HOME=/usr/java/jdk1.8.0_51/
? ? ? ? ? ? ? ? ? ? ? ? ? export SPARK_MASTER_HOST=master
? ? ? ? ? ? ? ? ? ? ? ? ? export SPARK_MASTER_IP=master
? ? ? ? ? ? ? ? ? ? ? ? ? export SPARK_MASTER_PORT=7077
? ? ? ? ? ? ? ? ? ? ? ? ? export MASTER=spark://master:7077
? ? ? ?? ?
? ? ? ?配置worker节点:
? ? ? ? ? ? ? vi conf/slaves:
? ? ? ? ? ? ? ? ? ? ? ?master? #此时master也作为slaves节点
? ? ? ? ? ? ? ? ? ? ? ?node
?
? ? ? ?运行master节点:
? ? ? ? ? ??./sbin/start-master.sh
? ? ? ? ?
? ? ? ?运行worker节点
? ? ? ? ? ??./sbin/start-slave.sh?spark://master:7077
?
? ? ? 测试worker节点能否与master通信:
? ? ? ? ? ? ?/bin/spark-shell --master??spark://master:7077
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
以上是关于hadoop+spark集群搭建的主要内容,如果未能解决你的问题,请参考以下文章
使用 Docker 搭建 Hadoop 集群 和 Spark On Yarn