阿里云ECS服务器搭建6节点Hadoop+HBase+Spark集群

准备工作

  • 相关安装包

JDK-1.8 链接 提取码:1022
Hadoop-2.7.1 链接 提取码:1022
Zookeeper-3.4.14 链接 提取码:1022
Spark-2.1.1 链接 提取码:1022

  • 配置阿里云服务器安全规则(重要

为了保证服务间的正常通信,需要在阿里云控制台中配置好安全规则。整理了部分集群正常使用需要开放的端口,如果发现日志中有关于端口未开放报错,在安全组中添加即可。
部分集群正常使用需要开放的端口

1.集群配置

由于阿里云中默认关闭防火墙,所以不需要在进行配置
如果用户不是root,需要配置用户具有root权限

  • 修改主机名
vim /etc/hostname

将localhost修改为其他名称(注意,不能用#将原主机名注释,需要将原主机名删掉,只保留新主机名)
在这里插入图片描述
修改完成后重启服务器,再次查看主机名修改已经生效

hostname
  • 创建保存路径

上传安装包保存路径

mkdir /opt/software

解压安装路径

mkdir /opt/module 

创建完成后使用连接工具将安装包上传至software中。

  • 配置地址映射

由于阿里云区分内网和外网,因此地址映射需要进行区分,具体实现方法为:
1.在Master节点上,将自己的ip设置为内网ip,将其他slaves节点的ip设置成外网ip
2.在slaves节点上,将自己的ip设置为内网ip,将Master节点的ip设置成外网ip

vim /etc/hostname

以Master节点为例,Master节点名称为hadoop01,其他为slaves节点

内网ip hadoop01
外网ip hadoop02
外网ip hadoop03
外网ip hadoop04
外网ip hadoop05
外网ip hadoop06

每个节点依次配置,如果配置出现错误则无法找到相应节点。

  • 配置SSH免密登录

此配置用于免密登录和分发文件等

1.生成公钥和私钥

ssh-keygen -t rsa

敲三下回车后生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

2.将公钥拷贝到要免密登录的目标机器上
以hadoop01节点为例

ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03
ssh-copy-id hadoop04
ssh-copy-id hadoop05
ssh-copy-id hadoop06

配置完成后依次在其他节点中进行配置。
全部配置完成后使用命令 ssh ip 即可实现免密登录,使用exit退出
在这里插入图片描述

2.安装JDK

进入安装包路径

cd /opt/software

解压文件

tar -zxvf jdk-8u11-linux-x64.tar.gz -C /opt/module/

配置环境变量

vim /etc/profile

在文件中添加JDK路径

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_11
export PATH=$PATH:$JAVA_HOME/bin

使配置文件生效

source /etc/profile

查看是否安装成功

java -version

出现版本信息即安装成功
在这里插入图片描述

3.安装Hadoop

进入安装包路径

cd /opt/software

解压文件

tar -zxvf hadoop-2.7.1.tar.gz -C /opt/module/

配置环境变量

vim /etc/profile

在文件中添加JDK路径

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.1
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

使配置文件生效

source /etc/profile

查看是否安装成功

hadoop version

修改配置文件

  • 配置core-site.xml

进入路径

cd /opt/module/hadoop-2.7.1/etc/hadoop
vim core-site.xml

在文件中添加如下配置

<!-- 指定HDFS中NameNode的地址 -->
<property>
	  <name>fs.defaultFS</name>
      <value>hdfs://hadoop01:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
	  <name>hadoop.tmp.dir</name>
	  <value>/opt/module/hadoop-2.7.1/data/tmp</value>
</property>

  • 配置hadoop-env.sh
vim hadoop-env.sh

在文件中添加

export JAVA_HOME=/opt/module/jdk1.8.0_11
  • 配置hdfs-site.xml
vim hdfs-site.xml

在文件中添加

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

<property>
       <name>dfs.namenode.name.dir</name>
       <value>file:///opt/module/data/tmp/dfs/name</value>
</property>

<property>
       <name>dfs.datanode.data.dir</name>
       <value>file:///opt/module/data/tmp/dfs/data</value>
</property>

<property>
       <name>dfs.namenode.http-address</name>
       <value>hadoop01:50070</value>
 </property>

<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>hadoop03:50090</value>
</property>
  • 配置yarn-env.sh
vim yarn-env.sh

在文件中添加

export JAVA_HOME=/opt/module/jdk1.8.0_11
  • 配置yarn-site.xml
vim yarn-site.xml

在文件中添加

<!-- reducer获取数据的方式 -->
<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>hadoop03</value>
</property>

  • 配置mapred-env.sh

在文件中添加

export JAVA_HOME=/opt/module/jdk1.8.0_11
  • 配置mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml

在文件中添加

<!-- 指定mr运行在yarn上 -->
<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
</property>

  • 配置slaves
vim slaves

在文件中添加需要存储数据的节点,这些节点中会启动DataNode服务和nodemanager服务

hadoop01
hadoop02
hadoop03
hadoop04
hadoop05
hadoop06
  • 编写集群分发脚本

进入路径

cd /usr/local/bin

创建文件

touch xsync

编辑文件

vim xsync

在文件中添加,注意修改循环中的主机名称

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for((host=2; host<7; host++)); do
        echo ------------------- hadoop0$host --------------
        rsync -rvl $pdir/$fname $user@hadoop0$host:$pdir
done

修改脚本执行权限

chmod 777 xsync

在集群中分发配置好的配置文件,如果带宽足够则可以将解压并配置好的hadoop进行分发,也可以分别在节点中解压安装后只分发配置文件

xsync /opt/module/hadoop-2.7.1
  • 启动Hadoop

如果集群是第一次启动,需要格式化NameNode

hadoop namenode -format

NameNode不可格式化多次,格式化多次时重新生成的clusterID会和DataNode冲突。DataNode要与NameNode一致,需要在临时路径中更改

vim /opt/module/data/tmp/dfs/data/current/VERSION

如果NameNode与ResourceManager不在同一个服务器中,不能使用start-all启动,需要在ResourceManager所在机器上启动yarn
(如果ResourceManager所在节点中没有配置好slaves,则只会在本地启动NodeManager)
如果按照本文配置,则启动方法为
1.在hadoop01节点中启动HDFS

/opt/module/hadoop-2.7.1/sbin/start-dfs.sh

编写启动脚本(根据集群情况调整)

touch start_hdfs.sh
chmod 777 start_hdfs.sh
vim start_hdfs.sh

在文件中添加

#start hdfs 
echo "hdfs is starting..."
ssh hadoop01 "/opt/module/hadoop-2.7.1/sbin/start-dfs.sh"

2.在hadoop02节点中启动yarn

/opt/module/hadoop-2.7.1/sbin/start-yarn.sh

编辑启动脚本(根据集群情况调整)

touch start_yarn.sh
chmod 777 start_yarn.sh
vim start_yarn.sh

在文件中添加

#start yarn
echo "yarn is starting..."
ssh hadoop02 "/opt/module/hadoop-2.7.1/sbin/start-yarn.sh"
  • 编写jps脚本

创建文件

touch start_jps.sh

设置权限

chmod 777 start_jps.sh

创建软连接

--Java路径根据你个人安装的情况而定
sudo ln -s /opt/module/jdk1.8.0_11/bin/jps /usr/local/bin/jps

编辑文件内容

vim start_jps.sh
#!/bin/sh

#查看各个主机的java进程
for HOST in hadoop01 hadoop02 hadoop03 hadoop04 hadoop05 hadoop06
do
    echo ===================== $HOST =======================
    ssh $HOST "jps"
done

查看namenode
hadoop01:50070
在这里插入图片描述

4.安装Zookeeper

进入安装包路径

cd /opt/software

解压文件

tar -zxvf zookeeper-3.4.14.tar.gz -C /opt/module/

修改配置

  • 将/opt/module/zookeeper-3.4.14/conf这个路径下的zoo_sample.cfg修改为zoo.cfg;
mv zoo_sample.cfg zoo.cfg
  • 打开zoo.cfg文件,修改dataDir路径:

修改数据存储路径配置

dataDir=/opt/module/zookeeper-3.4.14/zkData

增加如下配置

server.1=内网ip:2888:3888
server.2=内网ip:2888:3888
server.3=内网ip:2888:3888
server.4=内网ip:2888:3888
server.5=内网ip:2888:3888
server.6=内网ip:2888:3888
  • 在/opt/module/zookeeper-3.4.14/这个目录上创建zkData文件夹;
mkdir zkData
  • 在/opt/module/zookeeper-3.4.14/zkData目录下创建一个myid的文件;
  • 编辑myid文件;
vim myid

在文件中添加对应编号,以hadoop01为例

1
  • 拷贝配置好的zookeeper到其他机器上;
xsync zookeeper-3.4.14

在其他节点上修改myid文件中内容2、3、4等

  • 启动Zookeeper

1.集群节点中分别启动Zookeeper

cd /opt/module/zookeeper-3.4.14
bin/zkServer.sh start

2.编辑脚本启动
创建文件

touch start_zookeeper.sh

设置权限

chmod 777 start_zookeeper.sh

编辑文件内容

vim start_zookeeper.sh

在文件中添加

#!/bin/sh

for host in hadoop01 hadoop02 hadoop03 hadoop04 hadoop05 hadoop06
do
    echo "$host zookeeper is starting..."
    ssh $host "source /etc/profile;/opt/module/zookeeper-3.4.14/bin/zkServer.sh start"
done

集群分别查看状态

/opt/module/zookeeper-3.4.14/bin/zkServer.sh status

编辑脚本查看状态

创建文件

touch status_zookeeper.sh

设置权限

chmod 777 status_zookeeper.sh

编辑文件内容

vim status_zookeeper.sh

在文件中添加

for host in hadoop01 hadoop02 hadoop03 hadoop04 hadoop05 hadoop06
do
    echo "$host zookeeper status"
    ssh $host "source /etc/profile; /opt/module/zookeeper-3.4.14/bin/zkServer.sh status"
done

集群中有一个leader,剩下的都是follower
在这里插入图片描述

5.安装HBase

进入安装包路径

cd /opt/software

解压文件

 tar -zxvf hbase-2.0.0-bin.tar.gz -C /opt/module

修改配置

进入配置文件路径

 cd /opt/module/hbase-2.0.0/conf/
  • hbase-env.sh修改内容

打开文件

vim hbase-env.sh

添加如下内容

export JAVA_HOME=/opt/module/jdk1.8.0_11
export HBASE_MANAGES_ZK=false
  • hbase-site.xml修改内容

打开文件

vim hbase-site.xml

添加如下内容

    <property>     
		<name>hbase.rootdir</name>     
		<value>hdfs://hadoop102:9000/hbase</value>   
	</property>

	<property>   
		<name>hbase.cluster.distributed</name>
		<value>true</value>
	</property>

   <!-- 0.98后的新变动,之前版本没有.port,默认端口为60000 -->
	<property>
		<name>hbase.master.port</name>
		<value>16000</value>
	</property>

	<property>   
		<name>hbase.zookeeper.quorum</name>
	     <value>hadoop102:2181,hadoop103:2181,hadoop104:2181</value>
	</property>

	<property>   
		<name>hbase.zookeeper.property.dataDir</name>
	     <value>/opt/module/zookeeper-3.4.10/zkData</value>
	</property>
  • regionservers修改内容

打开文件

vim regionservers

添加如下内容

hdaoop01
hadoop02
hadoop03
hadoop04
hadoop05
hadoop06

文件中添加的节点将会启动regionserver服务,用于存储数据

  • 添加软连接
ln -s /opt/module/hadoop-2.7.1/etc/hadoop/core-site.xml /opt/module/hbase-2.0.0/conf/core-site.xml
ln -s /opt/module/hadoop-2.7.1/etc/hadoop/hdfs-site.xml /opt/module/hbase-2.0.0/conf/hdfs-site.xml
  • 分发HBase
xsync /opt/module/hbase-2.0.0
  • 启动HBase

进入目录

cd /opt/module/hbase-2.0.0/bin

执行启动命令

./start-hbase.sh

至此Hadoop+HBase搭建完毕,查看服务
在这里插入图片描述
网页查看HBase
hadoop01:16010
在这里插入图片描述

6.安装Spark(standalone模式)

进入安装包路径

cd /opt/software

解压文件

tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /opt/module/

修改配置

进入配置文件路径

cd /opt/module/spark-2.1.1-bin-hadoop2.7/conf/
  • 修改配置文件名称
mv slaves.template slaves
mv spark-env.sh.template spark-env.sh

打开文件 slaves

vim slaves

添加如下内容

hadoop01
hadoop02
hadoop03
hadoop04
hadoop05
hadoop06

打开文件 spark-env.sh

vim spark-env.sh

添加如下内容

SPARK_MASTER_HOST=hadoop01
SPARK_MASTER_PORT=7077

打开文件 spark-config.sh

vim spark-config.sh

添加如下内容

export JAVA_HOME=/opt/module/jdk1.8.0_11

分发spark包

xsync /opt/module/spark-2.1.1-bin-hadoop2.7
  • 启动spark

进入目录

cd /opt/module/spark-2.1.1-bin-hadoop2.7/sbin

执行命令

./start-all.sh

网页查看spark
hadoop01:8080

在这里插入图片描述

  • 配置spark历史服务

修改spark-default.conf.template名称

mv spark-defaults.conf.template spark-defaults.conf

修改spark-default.conf文件,开启Log

vim spark-defaults.conf

添加如下内容

spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://hadoop01:9000/directory

建立目录

hadoop fs –mkdir /directory

修改spark-env.sh文件

vi spark-env.sh

添加如下配置

export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 
-Dspark.history.retainedApplications=30 
-Dspark.history.fs.logDirectory=hdfs://hadoop01:9000/directory"

分发配置文件

xsync spark-defaults.conf
xsync spark-env.sh

启动历史服务

./start-history-server.sh

执行案例,查看结果

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop01:7077 \
--executor-memory 1G \
--total-executor-cores 2 \
./examples/jars/spark-examples_2.11-2.1.1.jar \
100

查看历史服务
hadoop01:18080
在这里插入图片描述

总结

  1. 阿里云的公网地址和私网地址在配置是要特别注意,地址有误会导致服务间无法通信
  2. 阿里云安全组中需要开启服务需要的端口,端口未开启会导致服务无法工作
  3. 网页查看时也需要在安全组中开启端口
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值