【集群搭建专题】——Hadoop集群搭建

Hadoop基础——HDFS——存储数据

NameNode

存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode

DataNode

在本地文件系统存储文件块数据,以及块数据的校验和。
基本单位是块(block),默认128M。

SecondaryNameNode

用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照

Hadoop基础——Yarn——计算调度

MapReduce

客户端利用利用MapReduce描述数据计算和处理的任务细节,交给hadoop的Yarn;Yarn则调度多台物理机的CPU完成计算,然后存储的hdfs中,常见操作有Map(映射)、Reduce(归约)

常见组件

1、客户端,提交mapreduce作业
2、yarn资源管理器,负责集群上计算资源的协调
3、yarn节点管理器,负责启动和监控集群中机器上的计算容器(container)
4、mapreduce的application master,负责协调运行mapreduce的作业
5、hdfs,分布式文件系统,负责与其他实体共享作业文件

在这里插入图片描述

旗下组件

ResourceManager

是全局的,负责对于系统中的所有资源有最高的支配权
ApplicationMaster:负责处理client提交的jobob以及协商第一个container以供applicationMaster运行;
Scheduler: Scheduler负责分配最少但满足application运行所需的资源量给Application。Scheduler只是基于资源的使用情况进行调度,并不负责监视/跟踪application的状态,当然也不会处理失败的task。

NodeManager

NodeManager 执行和监控任务需要资源实时共享数据节点的资源

Hadoop集群搭建——基本准备

环境准备

Java环境搭建
Hadoop下载:https://pan.baidu.com/s/1FFaUcMlfmmYIaFHGybwAgQ
(提取码:qyd2)

安装单机Hadoop

Hadoop 默认模式为非分布式模式,无需进行其他配置即可运行。非分布式即单 Java 进程,方便进行调试。

导入

用Xftp 将下载好的tar放入到opt目录下;

解压

解压安装包、并重命名

tar -zxvf /opt/hadoop-2.7.3.tar.gz
mv /opt/hadoop-2.7.3 /usr/local/hadoop

环境变量

修改

vi /etc/profile

export JAVA_HOME=/usr/local/java
export HADOOP_HOME=/usr/local/hadoop
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PS: JAVA_HOME、HADOOP_HOME、JRE_HOME声明在前面即可

刷新

source /etc/profile

测试

hadoop version

在这里插入图片描述
关闭防火墙

systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld

Hadoop单机搭建——搭建指令

配置文件
/usr/local/hadoop/etc/hadoop/core-site.xml

<configuration>
	<!--指定namenode的地址-->
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://127.0.0.1:9000</value>
	</property>
</configuration>

/usr/local/hadoop/etc/hadoop/hdfs-site.xml

<configuration>
	<!--指定hdfs保存数据的副本数量-->
	<property>
		<name>dfs.replication</name>
		<value>1</value>
	</property>
</configuration>

cd /usr/local/hadoop/etc/hadoop
cp mapred-site.xml.template mapred-site.xml

<configuration>
	<!--告诉hadoop以后MapReduce运行在YARN上-->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>

/usr/local/hadoop/etc/yarn-site.xml(yarn配置)

<configuration>
	<!-- Site specific YARN configuration properties -->
	<!--nomenodeManager获取数据的方式是shuffle-->
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
</configuration>

/usr/local/hadoop/etc/hadoop/hadoop-env.sh(修改以下java配置,因为这里无法读取java环境变量,所以写死一个值)
在这里插入图片描述

格式化命令

/usr/local/hadoop/bin/hadoop namenode -format

注意,如果报UTF-8错误,则必须将中文删掉,但是用notepad++编辑就不会,不要用记事本

启动脚本

sh /usr/local/hadoop/sbin/start-all.sh #停止
sh /usr/local/hadoop/sbin/stop-all.sh  #启动

http://172.168.233.128:8088 yarn页面
http://172.168.233.128:50070 hdfs页面
Ps:无法访问的话,记得关闭虚拟机防火墙

Hadoop集群搭建——基本指令

创建

创建目录:hdfs dfs -mkdir /winnie
创建文件:hdfs dfs -touchz /winnie/test03.txt
上传文件: hdfs dfs -put [本地目录/文件夹] [hadoop目录]

查看

查看目录:hdfs dfs -ls [文件目录]
查看文件:hdfs dfs -cat [file_path]
查看数量:hdfs dfs -count /

删除

hdfs dfs -rm [文件地址]
hdfs dfs -rm -r [目录地址]
hdfs dfs -rmr [目录地址] (递归删除)

获取

hdfs dfs -get [文件目录] [本地目录]
hdfs dfs -getmerge /winnie/hadoop-file /home/spark/hadoop-file/test.txt(获取并重命名)

修改

hdfs dfs -mv /winnie/test03.txt /winnie/test.txt

其他

hadoop job -kill [job-id]

Hadoop集群搭建——主从版本

一主从三从机制

172.168.233.128 master 
172.168.233.129 slave1
172.168.233.130 slave2 
172.168.233.131 slave3

准备工作——Host映射配置

批量执行

vi /etc/hosts
172.168.233.128 master 
172.168.233.129 slave1
172.168.233.130 slave2 
172.168.233.131 slave3

准备工作——SSH免密登录

生成公钥(全部一起执行)

cd ~/.ssh
ssh-keygen -t rsa (一直回车)

生成密钥(master执行)

cp id_rsa.pub authorized_keys 
chmod 644 authorized_keys 
sudo service sshd restart

传送密钥(master执行)

(这里.ssh的位置需要注意下,由于我用的是root用户,所以直接就在/root下,其他可能是/home/用户名/下)

可以ssh切换到其他连接 看一下是否生效就知道了该操作是否有效

scp /root/.ssh/authorized_keys slave1:/root/.ssh 
scp /root/.ssh/authorized_keys slave2:/root/.ssh 
scp /root/.ssh/authorized_keys slave3:/root/.ssh 

修改主机名(分别执行在四台机器上)

此操作必须,否则机器无法区分出是不同机器

hostnamectl --static set-hostname master
hostnamectl --static set-hostname slave1
hostnamectl --static set-hostname slave2
hostnamectl --static set-hostname slave2

准备工作——配置文件

先在master配置好,然后scp给各个其他节点

core-site.xml:

<configuration>  
      <property>  
        <name>fs.default.name</name>  
        <value>hdfs://master:9000</value>  
      </property>  
      <property>  
        <name>hadoop.tmp.dir</name>  
        <value>/opt/hadoop/tmp</value>  
      </property>  
</configuration>  

hdfs-site.xml:

 <configuration>  
      <property>  
        <name>dfs.replication</name>  
        <value>2</value>  
      </property>  
      <property>  
        <name>dfs.namenode.name.dir</name>  
        <value>file:/opt/hadoop/dfs/name</value>  
      </property>  
      <property>  
        <name>dfs.datanode.data.dir</name>  
        <value>file:/opt/hadoop/dfs/data</value>  
      </property>  
 </configuration>  

mapred-site.xml:

<configuration>  
      <property>  
        <name>mapreduce.framework.name</name>  
        <value>yarn</value>  
      </property>  
      <property>  
        <name>mapreduce.jobhistory.address</name>  
        <value>Master:10020</value>  
      </property>  
      <property>  
        <name>mapreduce.jobhistory.webapp.address</name>  
        <value>Master:19888</value>  
      </property>  
</configuration>  

yarn-site.xml:

<configuration>     
    <!-- Site specific YARN configuration properties -->  
      <property>  
        <name>yarn.nodemanager.aux-services</name>  
        <value>mapreduce_shuffle</value>  
      </property>  
      <property>  
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>  
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>  
      </property>  
      <property>  
        <name>yarn.resourcemanager.address</name>  
        <value>master:8032</value>  
      </property>  
      <property>  
    <name>yarn.resourcemanager.scheduler.address</name>  
        <value>master:8030</value>  
      </property>  
      <property>  
        <name>yarn.resourcemanager.resource-tracker.address</name>  
        <value>master:8031</value>  
      </property>  
      <property>  
        <name>yarn.resourcemanager.admin.address</name>  
        <value>master:8033</value>  
      </property>  
      <property>  
        <name>yarn.resourcemanager.webapp.address</name>  
        <value>master:8088</value>  
      </property>  
</configuration>  

slaves

slaves是一个文件在/usr/local/hadoop/etc/hadoop目录下

slave1 
slave2
slave3

搭建工作——分发配置

分发hadoop配置

su root
scp -r /usr/local/hadoop slave1:/usr/local/hadoop 
scp -r /usr/local/hadoop slave2:/usr/local/hadoop 
scp -r /usr/local/hadoop slave3:/usr/local/hadoop 

分发环境变量配置

scp -r /etc/profile slave1:/etc/profile
scp -r /etc/profile slave2:/etc/profile
scp -r /etc/profile slave3:/etc/profile

批量执行——刷新环境变量

scp -r /usr/local/hadoop slave1:/usr/local/hadoop 
scp -r /usr/local/hadoop slave2:/usr/local/hadoop 
scp -r /usr/local/hadoop slave3:/usr/local/hadoop 

chmod 755 /opt/hadoop/dfs
chmod 755 /opt/hadoop/tmp

搭建工作——启动主节点

由于采用了密钥模式,只需操作主节点,所有从节点和自动自动hadoop来完成功能

删除脏数据

rm -rf /opt/hadoop/dfs/
rm -rf /opt/hadoop/tmp/
rm -rf /usr/local/hadoop/logs

重新格式化(仅在主节点)

由于改了配置,所以需要namenode初始化一次

/usr/local/hadoop/bin/hadoop namenode -format

全部启动(仅在主节点)

cd /usr/local/hadoop
sbin/start-all.sh

分开启动(仅在主节点)

 单独启动hdfs:sbin/start-dfs.sh
 单独启动yarn:sbin/start-yarn.sh

关闭(仅在主节点)

sbin/stop-all.sh

搭建工作——测试

从节点JPS

在这里插入图片描述

有datanode没namenode

在这里插入图片描述
主节点JPS

没datanode有namenode

在这里插入图片描述
数据节点启动失败

有可能是多次format导致数据版本不一致,需要手动修改
可以在这里看到namenode或者datanode的启动日志进而排错
版本修改后要保持集群的一致性,需要复制他们

每个节点查看以下文件
vi /opt/hadoop/hdfs/current/VERSION

UUID和clusterID必须一致,storageType必须是DATA_NODE

storageID=DS-255b4fcb-7ade-433f-a14a-4bead35c0902
clusterID=CID-ec926c36-cc13-4b06-a239-21854f9b7221
cTime=0
datanodeUuid=8f1cc8a2-e5c0-4346-8339-b4d1b5e6a2d6
storageType=DATA_NODE
layoutVersion=-56

命名节点启动失败

如果更改了配置,注意重新格式化一下

/usr/local/hadoop/bin/hadoop namenode -format

只有一个节点

修改主机名

hostnamectl --static set-hostname master
hostnamectl --static set-hostname slave1
hostnamectl --static set-hostname slave2
hostnamectl --static set-hostname slave2

Hadoop集群搭建——HA版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值