简介
HDFS(Hadoop Distributed File System)是Apache Hadoop生态系统的一部分,是一种分布式文件系统,旨在处理大规模数据集的存储和处理。
以下是HDFS的一些关键特点和功能:
- 分布式存储:HDFS将数据分布式存储在多个物理节点上,以实现高容量和高可靠性。数据被划分为多个数据块(block),并在集群中的多个节点上进行复制存储,以提供容错能力和数据冗余。
- 扩展性:HDFS可以扩展到大规模的数据集和节点数。它可以运行在大型集群上,通过添加更多的节点来增加存储容量和数据处理能力。
- 容错性:HDFS通过数据的冗余复制来提供容错能力。每个数据块会在集群中的多个节点上进行复制存储,以防止节点故障导致数据丢失。
- 高吞吐量:HDFS优化了数据访问的方式,通过顺序读写和数据本地性原则,实现高吞吐量的数据访问。这使得HDFS适用于大数据处理任务,如批处理、数据分析和大规模并行计算。
- 数据局部性:HDFS将计算任务移动到存储数据的节点附近,以减少数据传输的网络开销,提高性能。这种数据局部性原则有助于优化数据处理的效率。
- 写一次、多次读取:HDFS适用于一次写入多次读取的应用场景。一旦数据被写入HDFS,可以多次读取和处理,以满足不同的分析和计算需求。
HDFS是Hadoop生态系统中的核心组件之一,被广泛应用于大数据处理和分析任务。它提供了可靠的分布式存储解决方案,适合用于处理大规模数据集和构建数据湖(Data Lake)等数据管理和处理系统。
1.Linux系统安装
1.环境准备
- VMware 15.5por
- Centos7镜像文件
- Centos7下载链接
2.虚拟机Centos系统安装
3.静态网络配置
- 查看网络是否联通
ping www.baidu.com
- 安装net-tools
yum upgrade
yum install net-tools
- 查看Mac地址
- 查看ip地址的起始和结束地址、
- 修改网络配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
- 重启网络服务,查看是否配置成功
service network restart
- 网络测试,输入以下命令
- 测试网络适配器:ping 192.168.77.2
- 测试网关:ping 192.168.77.2
- 测试互联网:ping www.baidu.com
如图所示,说明网络是通的,否则说明网络参数有问题
2.虚拟机克隆配置
- 克隆虚拟机(右键相应虚拟机->管理->克隆)
- 开启Hadoop2,修改主机名
hostnamectl set-hostname hadoop02
reboot
- 查看Mac地址
- 网络配置文件修改
vi /etc/sysconfig/network-scripts/ifcfg-ens33
- 按照以上步骤在克隆另外一台虚拟机Hadoop03
3.配置hosts文件和ssh免密登录
- 修改hosts配置文件(所有虚拟机都需要配置)
vi /etc/hosts
- 生成密钥文件(四次回车)
ssh-keygen -t rsa
- 将本机公钥文件复制到其他虚拟机上(接收方需要开机)
在hadoop01上执行,先输入yes,后输入对应主机的密码,堕胎虚拟机配置操作相同
ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03
- 在虚拟机hadoop02,hadoop03都需要执行,保证三台主机都能免密登录
- 查看是否免密登录
4.Hadoop集群配置
- 在所有虚拟机根目录下新建文件夹app,appt文件夹中新建data、servers和software文件
cd /
mkdir /app
mkdir /app/data
mkdir /app/servers
mkdir /app/software
- 准备安装包
hadoop-2.7.4.tar.gz
jdk-8u161-linux-x64.tar.gz
- 用Xshell依次连接hadoop1,2,3
- 先进入software文件内,然后把hadoop-2.7.4.tar.gz 、jdk-8u161-linux-x64.tar.gz上传进去
cd /app/software
- 按照JDK(所有虚拟机都要操作)
- 解压jdk
cd /app/software
tar -zxvf jdk-8u161-linux-x64.tar.gz -C /app/servers/
- 重命名jdk目录
cd /app/servers
mv jdk1.8.0_161 jdk
- 配置环境变量
vi /etc/profile
#tip:在配置文件末尾追加
export JAVA_HOME=/app/servers/jdk
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- 使配置文件生效
source /etc/profile
- 查看是否配置成功
java -version
- Hadoop安装(所有)
- 解压hadoop
cd /app/software
tar -zxvf hadoop-2.7.4.tar.gz -C /app/servers/
- 打开配置文件
vi /etc/profile
- 配置hadoop环境变量
#tip:在文件末尾追加
export HADOOP_HOME=/app/servers/hadoop-2.7.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- 使配置文件生效
source /etc/profile
- 查看是否配置成功
hadoop version
- Hadoop集群配置
- 进入主节点配置目录
cd /app/servers/hadoop-2.7.4/etc/hadoop/
- 修改hadoop-env.sh文件
vi hadoop-env.sh
#tip:找到相应位置,添加这段话
export JAVA_HOME=/app/servers/jdk
- 修改core-site.xml文件
vi core-site.xml
<configuration>
<!--用于设置Hadoop的文件系统,由URI指定-->
<property>
<name>fs.defaultFS</name>
<!--用于指定namenode地址在hadoop01机器上-->
<value>hdfs://hadoop01:9000</value>
</property>
<!--配置Hadoop的临时目录,默认/tem/hadoop-${user.name}-->
<property>
<name>hadoop.tmp.dir</name>
<value>/app/servers/hadoop-2.7.4/tmp</value>
</property>
</configuration>
- 修改hdfs-site.xml文件
vi hdfs-site.xml
<configuration>
<!--指定HDFS的数量-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--secondary namenode 所在主机的IP和端口-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop01:50090</value>
</property>
</configuration>
- 修改mapred-site.xml文件
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
- 修改yarn-site.xml文件
vi yarn-site.xml
<configuration>
<!--指定YARN集群的管理者(ResourceManager)的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
- 修改slaves文件
#tip:将文件中的localhost删除,添加主节点和子节点的主机名称
#tip:如主节点hadoop01,子节点hadoop02和hadoop03
vi slaves
- 将主节点中配置号文件和hadoop目录coopy给予子节点
#tip:这里主节点为hadoop01,子节点为hadoop02和hadoop03
scp /etc/profile hadoop02:/etc/profile
scp /etc/profile hadoop03:/etc/profile
scp -r /app/ hadoop02:/
scp -r /app/ hadoop03:/
- 使子节点中的配置文件生效
#tip:返回hadoop02和hadoop03节点执行下面命令
source /etc/profile
- 使子节点格式化文件系统(successfully formatted格式化成功)
hdfs namenode -format
5.Hadoop集群测试
- 启动集群
- 在主节点启动所有HDFS服务进程
start-dfs.sh
- 在主节点启动所有HDFS服务进程
start-yarn.sh
- 使用jps命令查看进程
- 关闭防火墙
systemctl stop firewalld #关闭防火墙
- 打开window下的C:\Windows\System32\drivers\etc打开hosts文件,在文件末添加三行代码:
192.168.77.138 hadoop01
192.168.77.139 hadoop02
192.168.77.140 hadoop03
- 通过UI界面查看Hadoop运行状态,在windows系统下,访问http://hadoop01:50070,查看HDFS集群状态
- 在windows下,访问http://hadoop01:8088,查看Yarn集群状态
hadoop核心hdfs命令使用
(1)在hdfs分布式文件系统上新建文件存储目录
hdfs dfs -mkdir -p /user/hadoop
(2)上传本地文件到hdfs分布式文件系统的指定目录中
hdfs dfs -put test.txt /user/hadoop/
(3)查看hdfs分布式文件系统内容
hdfs dfs -ls /user/hadoop
(4)查看上传文件信息
hdfs dfs -cat /user/hadoop/test.txt
(5) 下载hdfs分布式文件系统上文件到本地目录
hdfs dfs -get /user/hadoop/test.txt
jps
(6)删除hdfs分布式文件系统内容
hdfs dfs -rm /user/hadoop/test.txt
(7)运行一个简易的MapReduce程序
第一步先从本地上传进行统计计算的文件到hdfs文件系统中。例如将/app/servers/hadoop-2.7.4/etc/hadoop中的*.xml配置文件上传到hdfs的/zhu目录下,如图所示。
[root@hadoop01 ~]# hdfs dfs -mkdir -p /zhu
[root@hadoop01 ~]# hdfs dfs -put /export/servers/hadoop-2.7.4/etc/hadoop/*.xml /zhu
第二步使用hadoop提供的一个jar包,按照正则表达式进行统计。命令如下:
jar /export/servers/hadoop-2.7.4/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.4.jar grep /zhu /optput 'dfs[a-z]+'
结果:
启动/关闭
启动之前必须进行一次格式化操作
bin/hadoop namenode -format
启动hadoop:sbin/start-dfs.sh
关闭hadoop:sbin/stop-dfs.sh
启动yarn:sbin/start-yarn.sh
关闭yarn:sbin/stop-yarn.sh
标签:hdfs,HDFS,app,hadoop,Hadoop,etc,集群,节点,搭建 From: https://blog.51cto.com/u_16248628/7378012