centos搭建hadoop集群实战命令总结

第一部分   开发环境

 名称版本资源
Linuxcentos7centos7
JDK8u212jdk-8u212-linux-x64.tar.gz
Hadoop3.1.3hadoop-3.1.3.tar.gz
Zookerper3.5.7apache-zookeeper-3.5.7-bin.tar.gz
Kafka2.4.1kafka_2.11-2.4.1.tgz
Spark2.1.1spark-2.1.1-bin-hadoop2.7.tgz

第二部分  配置环境

虚拟机环境配置

1、虚拟机配置

注意:单台虚拟机内存4G,磁盘50G

2、必要安装环境

sudo yum install -y epel-release
sudo yum install -y psmisc nc net-tools rsync vim lrzsz ntp libzstd openssl-static tree iotop git

3、修改虚拟机的静态IP

sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33

修改为: (ONBOOT、IP地址、网关和DNS需要注意)

DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
NAME="ens33"
IPADDR=192.168.1.101
PREFIX=24
GATEWAY=192.168.1.2
DNS1=192.168.1.2

4、查看Linux虚拟机的虚拟网络编辑器,编辑->虚拟网络编辑器->VMnet8

子网Ip : 192.168.1.0

子网掩码:255.255.255..0

网关:192.168.1.2

5、查看Windows系统适配器VMware Network Adapter VMnet8的IP地址

IP地址:192.168.1.10

子网掩码:255.255.255.0

DNS服务器:192.168.1.2

6、修改主机名

sudo hostnamectl --static set-hostname hadoop101

7、配置主机名映射,需要打开/etc/hosts

sudo vim /etc/hosts

添加内容:

192.168.1.100 hadoop100
192.168.1.101 hadoop101
192.168.1.102 hadoop102
192.168.1.103 hadoop103

8、关闭防火墙

sudo systemctl stop firewalld
sudo systemctl disable firewalld

9、创建用户并给用户root权限

# 创建mayday用户
sudo useradd mayday
sudo passwd  123456

#重启虚拟机
reboot

#配置mayday用户具有root权限
vi sudo
修改/etc/sudoers文件,找到下面一行(91行),在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
mayday   ALL=(ALL)     ALL
注:
vi显示行号命令: 
: set nu

#在/opt目录下创建文件夹
1、在/opt目录下创建module、software文件夹
sudo mkdir module
sudo mkdir software
2、修改module、software文件夹的所有者cd 
sudo mkdir /opt/module /opt/software
sudo chown mayday:mayday /opt/module /opt/software

10、安装JDK,先卸载自带的JDK

rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps

注: 可以用CRT或者Xshell连接虚拟机,上传资源直接拖进去即可

11、解压到指定目录

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

12、配置环境变量

1、新建/etc/profile.d/my_env.sh文件
sudo vim /etc/profile.d/my_env.sh

2、添加如下内容
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

3、保存后退出
:wq

4、重启xshell窗口,让环境变量生效

5、测试JDK是否安装成功
java -version
如果能看到以下结果、则Java正常安装
java version "1.8.0_212"

Hadoop框架搭建

1、解压安装文件包到指定目录下

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

2、配置环境变量

1、获取Hadoop安装路径
[mayday@hadoop101 hadoop-3.1.3]$ pwd
/opt/module/hadoop-3.1.3

2、打开/etc/profile.d/my_env.sh文件
sudo vim /etc/profile.d/my_env.sh

3、在profile文件末尾添加JDK路径:(shitf+g)
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

4、后退出
:wq

5、改后的文件生效
source /etc/profile

6、安装成功
hadoop version
Hadoop 3.1.3

7、如果Hadoop命令不能用再重启)
sync
sudo reboot

注:基本每次安装一个组件都会重复上述 步骤

2、完全分布式需要三台

需要同步文件,避免重复配置,有时候会同步不成功,首先集群之间是可以ping通的,其次可能是权限问题,集群其他主机没有对应文件夹或权限

(1)在home/mayday下创建xsync文件

cd /home/mayday
vim xsync

(2)脚本实现

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
  echo Not Enough Arguement!
  exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
  echo ====================  $host  ====================
  #3. 遍历所有目录,挨个发送
  for file in $@
  do
    #4 判断文件是否存在
    if [ -e $file ]
    then
      #5. 获取父目录
      pdir=$(cd -P $(dirname $file); pwd)
      #6. 获取当前文件的名称
      fname=$(basename $file)
      ssh $host "mkdir -p $pdir"
      rsync -av $pdir/$fname $host:$pdir
    else
      echo $file does not exists!
    fi
  done
done

 

(3)修改脚本的执行权限

chmod +x xsync

(4)将脚本移入到bin中,方便全局调用

sudo mv xsync /bin/

(5)测试脚本

sudo xsync /bin/xsync

3、配置免密登陆

(1)ssh hadoop101会发现需要输入密码

(2)生成公钥和私钥

ssh-keygen -t rsa

然后只需要i巧三个回车,就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

(3)将公钥拷贝到要免密登录的目标机器上

ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104

注意:

还需要在hadoop102上采用root账号,配置一下无密登录到hadoop102hadoop103hadoop104

还需要在hadoop103上采用mayday登录到hadoop102hadoop103hadoop104服务器上。

 

集群规划

名称hadoop102hadoop103hadoop104
DFSnamenode  datanodedatanodesecondary namenode           dataode                                                                    
YARNnodemangerresourcemanger  nodemangernodemanger

1、配置core-site

cd $HADOOP_HOME/etc/hadoop
vim core-site.xml

添加内容

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:8020</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
    </property>
    <property>
        <name>hadoop.proxyuser.mayday</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.maydays</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>maydaye>
    </property>

 

 

2、配置hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
    </property>
</configuration>

3、配置yarn-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>4096</value>
    </property>
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</value>
    </property>
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
</configuration>

4、配置mapred-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

配置完成后,向集群分发文件

xsync /opt/module/hadoop-3.1.3/etc/hadoop/

5、群起集群

(1)配置works

vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

添加内容

hadoop102
hadoop103
hadoop104

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行

所有节点同步

xsync /opt/module/hadoop-3.1.3/etc

6、启动集群

hdfs namenode -format

如果集群是第一次启动,需要在hadoop102节点格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenodedatanode进程,然后再删除datalog数据

 

启动dfs

start-dfs.sh
start-yarn.sh

集群测试

# 小文件
hadoop fs -mkdir -p /user/mayday/
hadoop fs -put $HADOOP_HOME/wcinput/wc.input /user/mayday/

#传大文件
hadoop fs -put  /opt/software/hadoop-3.1.3.tar.gz  /

7、配置历史服务器

(1)配置mapred-site.xml

vi mapred-site.xml
<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop102:10020</value>
</property>

<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop102:19888</value>
</property>

(2)分发配置

xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml

(3)启动历史服务器

mapred --daemon start historyserver

8、配置日志聚集

日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。

日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。

注意:开启日志聚集功能,需要重新启动NodeManager ResourceManagerHistoryManager

(1)配置yarn.-site.xml

<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<property>  
    <name>yarn.log.server.url</name>  
    <value>http://${yarn.timeline-service.webapp.address}/applicationhistory/logs</value>
</property>
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>
<property>
    <name>yarn.timeline-service.enabled</name>
    <value>true</value>
</property>
<property>
    <name>yarn.timeline-service.hostname</name>
    <value>${yarn.resourcemanager.hostname}</value>
</property>
<property>
    <name>yarn.timeline-service.http-cross-origin.enabled</name>
    <value>true</value>
</property>
<property>
    <name>yarn.resourcemanager.system-metrics-publisher.enabled</name>
    <value>true</value>
</property>

配置完成之后

#分发配置
xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml

#闭NodeManager 、ResourceManager和HistoryServer
在103上执行: stop-yarn.sh
在102上执行: mapred --daemon stop historyserver

#启动NodeManager 、ResourceManage、Timelineserver和HistoryServer
在103上执行:start-yarn.sh
在103上执行:yarn --daemon start timelineserver
在102上执行:mapred --daemon start historyserver

#删除HDFS上已经存在的输出文件
hdfs dfs -rm -R /user/maydayt

#执行WordCount程序
hadoop jar  $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /user/mayday /user/mayday

Zookerper安装

1、解压到指定的目录

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

2、集群同步

xsync zookeeper-3.5.7/

3、配置服务器编号

在zookerper下创建zkData

 mkdir -p zkData

创建myid文件

vi myid
1

同步并修改其他两个节点为2,3,

4、配置zoo.cfg

mv zoo_sample.cfg zoo.cfg
 vim zoo.cfg

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

增加如下配置
#######################cluster##########################
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888

同步集群其他节点

 bin/zkServer.sh start

5、群起脚本

vi zk.sh

添加内容

#!/bin/bash

case $1 in
"start"){
    for i in hadoop102 hadoop103 hadoop104
    do
        echo "------------- $i -------------"
        ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh start"
    done 
};;
"stop"){
    for i in hadoop102 hadoop103 hadoop104
    do
        echo "------------- $i -------------"
        ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh stop"
    done
};;
"status"){
    for i in hadoop102 hadoop103 hadoop104
    do
        echo "------------- $i -------------"
        ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh status"
    done
};;
esac

添加执行权限

chmod 777 zk.sh

 

Flume安装

1、解压到指定目录

tar -zxf /opt/software/apache-flume-1.9.0-bin.tar.gz -C /opt/module/

2、修改名称

 mv /opt/module/apache-flume-1.9.0-bin /opt/module/flume

3、将lib文件夹下的guava-11.0.2.jar删除以兼容Hadoop 3.1.3

rm /opt/module/flume/lib/guava-11.0.2.jar

4、将flume/conf下的flume-env.sh.template文件修改为flume-env.sh,并配置flume-env.sh文件

mv flume-env.sh.template flume-env.sh
vi flume-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_212

 

Kafka配置

1、解压安装包

tar -zxvf kafka_2.11-2.4.1.tgz -C /opt/module/

2、修改名称

mv kafka_2.11-2.4.1/ kafka

3、在/opt/module/kafka目录下创建logs文件夹

mkdir logs

4、修改配置文件

cd config/
vi server.properties


输入以下内容:
#broker的全局唯一编号,不能重复
broker.id=0
#删除topic功能使能
delete.topic.enable=true
#处理网络请求的线程数量
num.network.threads=3
#用来处理磁盘IO的现成数量
num.io.threads=8
#发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
#接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
#请求套接字的缓冲区大小
socket.request.max.bytes=104857600
#kafka运行日志存放的路径
log.dirs=/opt/module/kafka/logs
#topic在当前broker上的分区个数
num.partitions=1
#用来恢复和清理data下数据的线程数量
num.recovery.threads.per.data.dir=1
#segment文件保留的最长时间,超时将被删除
log.retention.hours=168
#配置连接Zookeeper集群地址
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka

5、配置环境变量

vi /etc/profile.d/my_env.sh

#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin

6、使配置文件生效

source /etc/profile.d/my_env.sh

7、分发文件

xsync kafka/

注意:分发之后记得配置其他机器的环境变量

分别在hadoop103和hadoop104上修改配置文件/opt/module/kafka/config/server.properties中的broker.id=1broker.id=2

注:broker.id不得重复

8、启动集群

bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties

9、群起脚本

vi kf.sh

添加内容

#! /bin/bash

case $1 in
"start"){
    for i in hadoop102 hadoop103 hadoop104
    do
        echo " --------启动 $i Kafka-------"
        ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties "
    done
};;
"stop"){
    for i in hadoop102 hadoop103 hadoop104
    do
        echo " --------停止 $i Kafka-------"
        ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh stop"
    done
};;
esac

10、kakfa命令操作

1)查看当前服务器中的所有topic
 bin/kafka-topics.sh --zookeeper hadoop102:2181/kafka --list

2)创建topic
 bin/kafka-topics.sh --zookeeper hadoop102:2181/kafka \
--create --replication-factor 3 --partitions 1 --topic first
选项说明:
--topic 定义topic名
--replication-factor  定义副本数
--partitions  定义分区数

3)删除topic

bin/kafka-topics.sh --zookeeper hadoop102:2181/kafka \
--delete --topic first
需要server.properties中设置delete.topic.enable=true否则只是标记删除。
4)发送消息

 bin/kafka-console-producer.sh \
--broker-list hadoop102:9092 --topic first
>hello world

5)消费消息

bin/kafka-console-consumer.sh \
--bootstrap-server hadoop102:9092 --from-beginning --topic first

 bin/kafka-console-consumer.sh \
--bootstrap-server hadoop102:9092 --from-beginning --topic first
--from-beginning:会把主题中以往所有的数据都读取出来。
6)查看某个Topic的详情

bin/kafka-topics.sh --zookeeper hadoop102:2181/kafka \
--describe --topic first
7)修改分区数

bin/kafka-topics.sh --zookeeper hadoop102:2181/kafka --alter --topic first --partitions 6

 

Spark安装(yarn模式)

1‘、解压到指定目录

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

2、进入到/opt/module目录,修改spark-2.1.1-bin-hadoop2.7名称为spark-yarn

mv spark-2.1.1-bin-hadoop2.7/ spark-yarn

3、hadoop配置文件/opt/module/hadoop-2.7.2/etc/hadoop/yarn-site.xml,添加如下内容

vi yarn-site.xml
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
     <name>yarn.nodemanager.pmem-check-enabled</name>
     <value>false</value>
</property>

<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
     <name>yarn.nodemanager.vmem-check-enabled</name>
     <value>false</value>
</property>

分发配置文件

xsync /opt/module/hadoop-2.7.2/etc/hadoop/yarn-site.xml

修改/opt/module/spark/conf/spark-env.sh,添加YARN_CONF_DIR配置,保证后续运行任务的路径都变成集群路径

mv spark-env.sh.template spark-env.sh
vi spark-env.sh

YARN_CONF_DIR=/opt/module/hadoop-2.7.2/etc/hadoop

分发spark-yarn

xsync spark-yarn

启动集群

 sbin/start-dfs.sh
 sbin/start-yarn.sh
 bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
./examples/jars/spark-examples_2.11-2.1.1.jar \
10

4、配置历史服务器

1)修改spark-default.conf.template名称
 mv spark-defaults.conf.template spark-defaults.conf

2)修改spark-default.conf文件,配置日志存储路径,并分发
vi spark-defaults.conf
spark.eventLog.enabled          true
spark.eventLog.dir               hdfs://hadoop102:8020/directory

 xsync spark-defaults.conf
3)修改spark-env.sh文件,添加如下配置:
 vi spark-env.sh

export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080 
-Dspark.history.fs.logDirectory=hdfs://hadoop102:8020/directory 
-Dspark.history.retainedApplications=30"
# 参数1含义:WEBUI访问的端口号为18080
# 参数2含义:指定历史服务器日志存储路径
# 参数3含义:指定保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。
4)分发配置文件

 xsync spark-env.sh

查看集群运行状态脚本jps

#!/bin/bash
for i in hadoop106 hadoop107 hadoop108
do 
    echo "===============  $i  =============="
    ssh $i 'jps'
done

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值