CentOS下Hadoop+Spark集群搭建

CentOS下Hadoop+Spark集群环境搭建

硬件环境

虚拟机*3

每台虚拟机配置:系统CentOS6.5 64位,内存1g,硬盘20g。

网络地址:

  • master:172.27.35.10
  • slave1:172.27.35.11
  • slave2:172.27.35.12

软件环境

  • java版本:1.8.0_151
  • hadoop版本:2.7.6
  • spark版本:2.3.0
  • scala版本:2.11.12

xshell安装

下载安装xshell,使用SSH远程登录虚拟机。

java安装

1、登录master主机

使用xshell远程登录master主机,登录成功后如下图所示:

2、检查虚拟机网络连接是否正常

可以使用ping命令来检查网络问题:

ping www.baidu.com

如果ping成功,则网络没有问题。

如果ping没有成功,则输入ifconfig,查看网络设置。如果显示如下图:

则说明网卡没有设置启动好,需设置网卡并启动。

修改网卡设置:

vim /etc/sysconfig/network-scripts/ifcfg-eth0

修改后如图所示:

如上图配置将master主机IP地址设置为静态地址172.27.35.10,其余主机可以参照上述操作将IP地址设置为相应静态地址。

然后配置DNS:

vim /etc/resolv.conf

配置后如图所示:

注意:虚拟机中设置静态IP地址时,网关、子网掩码要和宿主机一样,IP地址也要和宿主机在同一个网段,否则连不上网,桥接模式要记得选择网卡。

配置完成后输入service network restart重启网卡,便可成功连接网络。如果使用的是虚拟机,并且子节点是从其他机器克隆的话,注意修改ifcfg-eht0中的HWADDR硬件地址,并且删除/etc/udev/rules.d/70-persistent-net.rules,这个文件确定了网卡和MAC地址的信息之间的绑定,所以克隆后需删除,待机器重启后重新生成。

3、更新软件包

在终端程序输入以下命令来更新软件包:

yum upgrade

4、安装java

oracle官网下载对应的jdk,拷贝到master主节点上,这里用的版本为jdk-8u151-linux-x64.tar.gz。

输入解压缩命令:

tar -zxvf jdk-8u151-linux-x64.tar.gz

将解压后文件夹重命名移动到/usr/local/java中(这里软件包都一律安装到/usr/local文件夹中):

 mv jdk1.8.0_151/ /usr/local/java

5、配置系统变量

输入命令修改系统配置文件:

vim /etc/profile

在文件末尾输入:

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

之后保存退出,输入source /etc/profile使配置文件生效。

6、查看java版本

java -version

结果如图所示:

如上,java环境安装配置成功。

7、发送jdk到从节点上

(1) 修改主节点、从节点hosts文件,修改后hosts文件如下图所示:

(2) 配置各个节点ssh免密登陆

在master主节点上输入命令ssh-keygen -t rsa生成公钥,结果如图所示:

然后输入命令将公钥发送到各个子节点上:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@slave1

结果如图所示:

上图所示只是将公钥从master主节点发送到slave1从节点的authorized_keys列表,发送到其他从节点只需改变主机名就可以了。

输入ssh slave1验证是否主节点到从节点免密登陆,结果如图所示:

说明主节点到slave1从节点免密登陆配置成功。

注意:除了配置主节点到各个子节点间免密登陆,我们最好也配置各个子节点到主节点间以及各个子节点间免密登陆,在需要配置到其他节点间免密登陆的主机上按照如上方法操作即可。

(3) 发送jdk到从节点

输入命令scp -r /usr/local/java/ root@slave1:/usr/local/java/,将jdk发送到slave1从节点上,如下图所示:

发送到其他子节点只需修改目标主机名即可。

(4) 配置各个从节点系统变量

参照第5步所示方法。最后输入java -version验证配置是否成功。

Hadoop安装

1、安装Hadoop

Hadoop官网下载Hadoop安装包,拷贝到主节点上,这里用的版本为hadoop-2.7.6.tar.gz。

输入解压缩命令:

tar -zxvf hadoop-2.7.6.tar.gz

将解压后文件夹重命名移动到/usr/local/hadoop中:

mv hadoop-2.7.6 /usr/local/hadooop

2、配置系统环境变量

输入命令vim /etc/profile,在文件末尾输入如下内容:

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

之后保存退出,输入source /etc/profile使配置文件生效。

3、hadoop相关文件配置

hadoop配置文件所在目录为$HADOOP_HOME/etc/hadoop,此处HADOOP_HOME为hadoop安装目录,进入hadoop配置文件所在目录,修改相应配置文件。

(1)hadoop-env.sh文件配置

修改JAVA_HOME为当前jdk安装目录:

export JAVA_HOME=/usr/local/java

(2)core-site.xml文件配置如下

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
</configuration>

(3)hdfs-site.xml文件配置如下

<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>

<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/hdfs/namenode</value>
</property>

<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/hdfs/datanode</value>
</property>
</configuration>

(4)slaves文件配置如下

slave1
slave2

因为我们没有用到hadoop的yarn与mapreduce,所以hadoop相关配置到此结束。

4、发送hadoop安装包到各个从节点

输入命令scp -r /usr/local/hadoop/ root@slave1:/usr/local/hadoop,将hadoop安装包发送到slave1节点,发送的其他节点只需修改相应主机名即可。

然后修改对应从节点系统变量,方法参照第2步。

5、格式化namenode

在master主节点输入命令hadoop namenode -format格式化namenode,如下图所示:

6、启动hdfs

在master主节点输入命令start-dfs.sh,启动hdfs,如下图所示:

7、检查hdfs是否启动成功

在主节点输入jps,查看已启动的java进程,如下图所示,显示namenode、sercondaryNamenode启动成功:

分别进入各个从节点,查看datanode是否启动成功,如下图所示,则datanode启动成功:

8、hdfs管理界面进入

在地址栏输入http://172.27.35.10:50070,此处172.27.35.10为namenode主机ip,尝试进入hdfs管理界面,如果无法进入,一般是防火墙的问题,可以输入命令service iptables stop关闭防火墙,也可以进一步输入命令chkconfig iptables off关闭防火墙开机自启动,为了集群的顺利运行,可以把集群中的机器防火墙都关闭掉。成功进入hdfs管理界面如下图所示:

scala安装

1、安装scala

在安装Spark之前,我们需要先安装scala,到scala官网下载scala,拷贝到主节点中,此处安装版本为scala-2.11.12.tgz。

输入解压缩命令:

tar -zxvf scala-2.11.12.tgz

将解压后文件夹重命名移动到/usr/local/scala中:

mv scala-2.11.12 /usr/local/scala

2、配置系统环境变量

输入命令vim /etc/profile,在文件末尾添加如下内容:

export SCALA_HOME=/usr/local/scala
export PATH=$PATH:$SCALA_HOME/bin

之后保存退出,输入source /etc/profile使配置文件生效。输入scala -version验证安装是否成功,如下图所示:

3、发送scala到从节点

输入命令scp -r /usr/local/scala/ root@slave1:/usr/local/scala,将scala发送到slave1节点,发送到其他节点只需修改相应主机名即可。同时修改系统环境变量,参照第2步。

Spark安装

1、安装Spark

Spark官网下载Spark,拷贝到主节点中,此处安装版本为spark-2.3.0-bin-hadoop2.7.tgz。解压缩并将解压后文件夹重命名移动到/usr/local/spark中。

tar -zxvf spark-2.3.0-bin-hadoop2.7.tgz
mv spark-2.3.0-bin-hadoop2.7 /usr/local/spark

2、配置系统环境变量

输入命令vim /etc/profile,在文件末尾添加如下内容:

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

3、spark相关文件配置

spark相关配置文件都在$SPARK_HOME/conf文件夹目录下,此处SPARK_HOME为Spark安装目录,进入Spark配置文件所在目录,修改相应配置文件。

(1)spark-env.sh文件配置

拷贝spark-env.sh.template到spark-env.sh,命令如下:

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

spark-env.sh文件配置如下:

export JAVA_HOME=/usr/local/java
export SPARK_MASTER_IP=master
export SPARK_WORKER_CORES=1
export SPARK_WORKER_MEMORY=1g
export SPARK_WORKER_INSTANCES=2
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://master:9000/historyServerForSpark/logs"
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=FILESYSTEM -Dspark.deploy.recoveryDirectory=/usr/local/spark/recovery"

注意:此处历史服务器日志存放地址为hdfs://master:9000/historyServerForSpark/logs,在启动历史服务器前一定要确保该文件夹存在,
可以输入hadoop fs -mkdir -p /historyServerForSpark/logs来创建该文件夹。

(2)slaves文件配置如下

拷贝slaves.template到slaves,命令如下:

cp slaves.template slaves

slaves文件配置如下:

slave1
slave2

(3)spark-defaults.conf文件配置

拷贝spark-defaults.con.template到spark-defaults.conf,命令如下

cp spark-defaults.conf.template spark-defaults.conf

spark-defaults.conf文件配置如下:

spark.eventLog.enabled=true
spark.eventLog.dir=hdfs://master:9000/historyServerForSpark/logs
spark.eventLog.compress=true

此处主要是历史服务器相关配置。

4、发送spark安装包到各个从节点

输入命令scp -r /usr/local/spark/ root@slave1:/usr/local/spark,将spark发送到slave节点,发送到其他节点只需修改对应主机名就行。同时修改系统环境变量,参照第2步。

5、启动spark集群

进入SPARK_HOME/sbin目录,输入命令./start-all.sh,结果如下图所示:

6、启动历史服务器

首先确保历史服务器日志存放文件夹已创建,然后进入SPARK_HOME/sbin目录,输入命令./start-history-server.sh,结果如下图所示:

7、检查spark集群、历史服务器是否启动成功

在主节点输入jps,查看已启动的java进程,如下图所示,显示master、historyserver启动成功:

分别进入各个子节点,查看worker是否启动成功,如下图所示,则worker启动成功:

8、进入集群管理、历史服务器管理页面

在浏览器地址栏输入地址http://172.27.35.10:8080,此处172.27.35.10为master ip地址,进入集群管理界面,成功进入如下图所示:

在浏览器地址栏输入地址http://172.27.35.10:18080,进入历史服务器管理界面,成功进入如下图所示:

因为我们还没有跑过程序,所以历史服务器里记录为空。

9、集群测试

下面我们尝试在spark集群中跑个简单的测试程序,进入目录$SPARK_HOME/bin,此处SPARK_HOME为spark安装目录,输入如下命令:

./bin/spark-submit \
  --class org.apache.spark.examples.SparkPi \
  --master spark://master:6066 \
  --deploy-mode cluster \
  --supervise \
  --executor-memory 1G \
  --total-executor-cores 2 \
  ../examples/jars/spark-examples_2.11-2.3.0.jar \
  1000

如下图所示:

然后进入集群管理界面查看应用运行情况,如下图所示:

上图显示应用程序正在运行。

当应用程序运行结束后,进入历史服务器管理界面,如下图所示:

点击相应应用程序,可查看应用程序具体运行情况,如下图所示:

结语

到此CentOS下Hadoop+Spark集群搭建已经成功完成啦,让我们开启愉快的大数据之旅吧!

写在最后

聊技术,不止于技术

欢迎大家关注我的个人公众号:WU双,在这里我会与大家分享技术文章、管理知识以及个人的一些思想感悟。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容