Hadoop\Spark集群配置简约

本博客根据尚硅谷大数据课程(Hadoop)与黑马程序员(Spark)抽取所写,方便查阅。具体详情,请查看尚硅谷大数据与黑马程序员相关课程内容。

安装CentOS基本配置

  • 开启网络
  • 设置ROOT密码
  • 创建用户

虚拟机的环境准备

  • 克隆虚拟机

检查vim

  • vim编辑器需要安装三个包:
vim-enhanced-7.0.109-7.el5
vim-minimal-7.0.109-7.el5
vim-common-7.0.109-7.el5
  • 查看一下你本机已经存在的包,确认一下你的VIM是否已经安装: 输入
rpm -qa|grep vim
  • 如果上面三个包一个都没有显示,则直接输入命令
yum -y install vim*

修改主机名

#CentOS 7
vim /etc/hostname

网络修改

关闭防火墙

systemctl stop firewalld.service            #停止firewall
systemctl disable firewalld.service        #禁止firewall开机启动

修改克隆虚拟机的静态IP

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

BOOTPROTO=static  #启用静态IP地址 dhcp 为动态
ONBOOT=yes  #开启自动启用网络连接
IPADDR=192.168.244.100  #设置IP地址 
GATEWAY=192.168.244.2  #设置网关 
DNS1=192.168.244.2 # 设置DNS
NETMASK=255.255.255.0

service network restart  #重启网络 

网卡ens33 不存在

ifconfig ens33 up

systemctl stop NetworkManager
systemctl disable NetworkManager

ifup ens33

配置myz用户具有root权限

vim /etc/sudoers

使用XShell 连接服务器

获取UUID

uuidgen ens33

查看UUID

nmcli con show

修改计算机名与ip对应

vim /etc/hosts

192.168.116.101 spark101
192.168.116.102 spark102
192.168.116.103 spark103

192.168.116.110 GeoMesa110
192.168.116.111 GeoMesa111
192.168.116.112 GeoMesa112

解决单节点启动——配置SSH

生成公钥和私钥

  • 进入到 .ssh 文件夹,隐藏文件夹,需要 ls -al 才能查看
  • 生成:
ssh-keygen -t rsa
  • 连续三次回车后生成

将公钥拷贝到其他服务器

ssh-copy-id hadoop102
  • 第一次需要输入密码
  • 然后其他服务器的 .ssh 中就会多出个 authorized_keys
  • 这样就完成了免密登录
  • 然后还要把秘钥拷贝到100上,以免访问自己也需要访问密码
    • 以为在访问时都是方访问 authorized_keys
    • 因为母机上有NameNode,负责内容分发,所以要配置自己的ssh
    • 注意:也要给ResourceManager 的 myz 账号配置一个ssh
    • 注意:也要给主机的root账号创建ssh,使用 su root 切换用户

在/opt 目录下创建文件夹

  • module jar 包解压目录
  • software 用于存储jar包
  1. 创建文件夹
sudo mkdir module
sudo mkdir software

# 删除文件夹
rm -rf rh/
  1. 修改所有者/组
sudo chown myz:myz module/ software/

解压

tar -zxvf xxx.tar.gz -C /opt/module

配置Java的环境变量

vim /etc/profile

# 文章末尾
export JAVA_HOME=/opt/module/jdk1.8.0_241
export PATH=$PATH:$JAVA_HOME/bin

export NODE_HOME=/opt/module/node-v12.18.3-linux-x64
export PATH=$PATH:$NODE_HOME/bin 
export NODE_PATH=$NODE_HOME/lib/node_modules

# 添加环境变量后并不能使用,
source /etc/profile

安装Hadoop,配置环境变量

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

搭建完全分布式

  • 准备3台客户机
  • 安装JDK
  • 配置环境变量
  • 安装Hadoop
  • 配置环境你变量
  • 配置集群
  • 单点启动
  • 配置ssh
  • 群起并测试

编写集群分发脚本

xsync 集群分发脚本

  • 循环复制文件到所有节点的相同目录下
  • 只要主节点文件发生变化,则其他节点都跟着变化
  • 在 /home/myz/bin 目录下创建 xsync
touch xsync
  • bash 代码如下:
#!/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=101; host<104; host++)); do
        echo ------------------- spark$host --------------
        rsync -rvl $pdir/$fname $user@spark$host:$pdir
done
  • 为了所有人都可以使用 xsync :
chmod 777 xsync

编写xcall

#! /bin/bash

for i in spark101 spark102 spark103
do
        echo --------- $i ----------
        ssh $i "$*"
done

编写zookeeper群起脚本

vim zk.sh

GeoMesa110 GeoMesa111 GeoMesa112

#! /bin/bash

case $1 in
"start"){
	for i in HBase105 HBase106 HBase107
	do
		ssh $i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh start"
	done
};;
"stop"){
	for i in HBase105 HBase106 HBase107
	do
		ssh $i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh stop"
	done
};;
"status"){
	for i in HBase105 HBase106 HBase107
	do
		ssh $i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh status"
	done
};;
esac

如果群起脚本不起作用

1)修改/etc/profile文件:用来设置系统环境参数,比如$PATH. 这里面的环境变量是对系统内所有用户生效。使用bash命令,需要source /etc/profile一下。

2)修改~/.bashrc文件:针对某一个特定的用户,环境变量的设置只对该用户自己有效。使用bash命令,只要以该用户身份运行命令行就会读取该文件。

3)把/etc/profile里面的环境变量追加到~/.bashrc目录

cat /etc/profile >> ~/.bashrc

SCP安全拷贝

  • 可以实现服务器与服务器之间的数据拷贝
  • 将数据推过去基本语法:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ClGhdJ5N-1604018492604)(…/07%20%E5%A4%A7%E6%95%B0%E6%8D%AE/assets/1583324935383.png)]

scp -r module/ root@hadoop102:/opt/module

sudo scp /etc/profile root@hadoop101:/etc
  • 将数据拉过来基本语法
sudo scp -r root@192.168.141.101:/opt/module /opt/module
  • 将数据拉到其他服务器上
scp -r myz@192.168.141.101:/opt/module root@192.168.141.103:/opt/module

修改拷贝数据用户所有者

sudo chown myz:myz module -R
  • 必须要有-R 递归!

rsync

  • 主要用于备份和镜像,具有速度快,避免重复相同内容和支持符号链接的优点
  • 与scp 不同的是,rsync做文件比scp快,rsync只对差异文件做更新,scp是将所有的文件都复制过去
  • 基本语法
    在这里插入图片描述

集群配置

  • 集群部署规划

在这里插入图片描述

hadoop101hadoop102hadoop103
HDFSNameNode、DataNodeDataNodeSecondaryNameNode、DataNode
YARNNodeManagerResourceManager、NodeManagerNodeManager

核心配置文件

配置 core-site.xml

vim core-site.xml
  • 写入以下配置
<!-- 指定HDFS中NameNode的地址-->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://HBase105:9000</value>
</property>

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

配置 hadoop-env.sh

  • 只要遇到env就更改JAVA_HOME
  • 获取JDK的安装路径:
echo $JAVA_HOME

/opt/module/jdk1.8.0_241

hdfs-site.xml

  • 可配置也可不配置
  • 数据副本数
  • 初始值为3,取决于计算机性能,越好值越小,不用太多的副本
<!-- 指定HDFS 副本的数量-->
<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>

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

配置yarn-env.sh

  • 配置JAVA_HOME环境变量
/opt/module/jdk1.8.0_241

配置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>HBase106</value>
</property>

MapReduce配置文件

配置mapred-env.sh

  • 配置JAVA_HOME环境变量
/opt/module/jdk1.8.0_241

配置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>

分发

xsync /opt/module/hadoop-2.7.7

Hadoop 各生态端口

https://blog.csdn.net/aeh129/article/details/8182647?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

集群启动/停止方式

配置slaves

cd /opt/module/hadoop-2.7.7/etc/hadoop/
vim slaves
  • 在改文件下增加集群主机名(有几个,添加几个)
hadoop101
hadoop102
hadoop103

spark101
spark102
spark103

HBase105
HBase106
HBase107

geomesa110
geomesa111
geomesa112
  • 注意!:改文件中添加的内容结尾不允许有空格,文件中不允许有空行
  • 修改后同步所有节点的配置文件

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

hadoop namenode -format

各个服务组件逐一启动/停止

( 1)分别启动/停止 hdfs 组件

hadoop-daemon.sh start|stop namenode|datanode|secondarynamenode

( 2)启动/停止 yarn

yarn-daemon.sh start|stop resourcemanager|nodemanager

各个模块分开启动/停止(配置 ssh 是前提) 常用

( 1)整体启动/停止 hdfs
start-dfs.sh
stop-dfs.sh
( 2)整体启动/停止 yarn
start-yarn.sh
stop-yarn.sh

sbin/hadoop-daemon.sh start datanode

nameNode 无法启动

  • 需要删除 data/ logs/ 文件夹,并格式化后再次启动

Spark

配置Scala

# scala environment
export SCALA_HOME=/opt/module/scala-2.13.1
export PATH=$PATH:$SCALA_HOME/bin

修改spark-env.sh文件

export JAVA_HOME=/opt/module/jdk1.8.0_241
export SCALA_HOME=/opt/module/scala-2.13.1
export HADOOP_HOME=/opt/module/hadoop-2.7.7
export HADOOP_CONF_DIR=/opt/module/hadoop-2.7.7/etc/hadoop
export SPARK_MASTER_PORT=7077

修改slaves

mv slaves.template slaves
vim slaves

spark101
spark102
spark103

配置 HistoryServer

  • 修改 spark-defaults.conf
mv spark-defaults.conf.template spark-defaults.conf
vim spark-defaults.conf

spark.eventLog.enabled true
spark.eventLog.dir hdfs://spark101:9000/spark_log
spark.eventLog.compress true
  • 修改 spark-env.sh
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000 -Dspark.history.retainedApplications=10 -Dspark.history.fs.logDirectory=hdfs://spark101:9000/spark_log"

在HDFS中创建日志目录

hdfs dfs -mkdir -p /spark_log

群起Spark

cd /opt/module/spark-2.4.5-bin-hadoop2.7

sbin/start-all.sh 
sbin/start-history-server.sh 

高可用配置(Zookeeper)

编辑 spark-env.sh 注释掉SPARK_MASTER_HOST地址,并新增如下配置

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=spark201:2181,spark202:2181,spark203:2181 -Dspark.deploy.zookeeper.dir=/spark"

测试

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://spark101:7077 \
--executor-memory 2G \
--total-executor-cores 3 \
/opt/module/spark-2.4.5-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.4.5.jar \
100
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值