HDFS作为Hadoop的核心组件,其搭建是Hadoop集群能够成功运行的基础,本文就描述了我在搭建HDFS集群时的流程与遇到的问题。
HDFS是一个完全分布式文件系统:引入存放文件元数据信息的服务器Namenode和实际存放数据的服务器Datanode,对数据进行分布式储存和读取。
首先我们应该有一个做好免密登录且互相连接的虚拟机流程详见
链接: https://blog.csdn.net/qq_53879605/article/details/126883887?spm=1001.2014.3001.5501
vi /etc/hostname
node01的主机名 (node02,node03同样要检查,为简便后文以01,02,03称呼)
vi /etc /hosts
ssh node02
用01登录02,03若成功则无误,若不能登录
见链接: https://blog.csdn.net/qq_53879605/article/details/126883887?spm=1001.2014.3001.5501
java -version
cd /opt
mkdir software
cd software/
mkdir hadoop
cd hadoop/
mkdir hdfs
cd hdfs/
mkdir data
mkdir name
mkdir tmp
cd /opt/software/hadoop
yum-y install lrzsz
rz # 上传hadoop-2.9.2.tar.gz
tar -xvzf hadoop-2.9.2.tar.gz
上传Hadoop时只需将hadoop-2.9.2.tar.gz 拖到xshell下即可
文件下载链接: https://pan.baidu.com/s/1kcu2FvwjKTijW-lMd4h6VQ?pwd=yre0
提取码yre0
vi /etc/profile
#修改的语句为
export HADOOP_HOME=/opt/software/hadoop/hadoop-2.9.2
export PATH=${PATH}:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
source /etc/profile
测试Hadoop是否安装
hadoop version
无需修改配置 只是修改JAVAHOME和HADOOPCONF_DIR的值
cd /opt/software/hadoop/hadoop-2.9.2/etc/hadoop/
vi hadoop-env.sh
export JAVA_HOME=/usr/local/java/jdk1.8
export HADOOP_CONF_DIR=/opt/software/hadoop/hadoop-2.9.2/etc/hadoop
此步新增JAVAHOME
需找到#export JAVAHOME=/home/y/libexec/jdk1.6.0/
并在下面添加JAVAHOME的配置文件
cd /opt/software/hadoop/hadoop-2.9.2/etc/hadoop/
vi yarn-env.sh
#添加配置文件为
export JAVA_HOME=/usr/local/java/jdk1.8
此步是将文件系统节点改为node01
•fs.defaultFS表示指定集群的文件系统类型是分布式文件系统(HDFS),datanode发送到namenode的地址
•hadoop.tmp.dir表示hadoop临时文件目录
vi core-site.xml
#添加配置文件为
<property>
<name>fs.defaultFS</name>
<value>hdfs://node01:9000
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/software/hadoop/hdfs/tmp</value>
</property>
dfs.replication原本配置是1,修改为3,表示副本数是3
dfs.datanode.max.locked.memory配置添加,配置值根据自己机器情况配置
dfs.permissions配置添加,值配置false,不开启文件权限
cd /opt/software/hadoop/hadoop-2.9.2/etc/hadoop/
vi hdfs-site.xml
#添加的配置文件为
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/software/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/software/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.datanode.max.locked.memory</name>
<value>65536</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
其中dfs.datanode.max.locked.memory需要与自身机型配置
利用ulimit -l 参数查询
value是字节数(Byte),那么64*1024=65536 Byte
首先需要吧mapred-site.xml.template拷贝成mapred-site.xml
cd /opt/software/hadoop/hadoop-2.9.2/etc/hadoop/
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
#添加的配置文件为
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
vi yarn-site.xml
#添加的配置文件
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
配置3台机器主机名,此配置表示三台机器都作为DataNode
cd /opt/software/hadoop/hadoop-2.9.2/etc/hadoop/
vi slaves
node01
node02
node03
在02 03上创建software目录
cd /opt/
mkdir software
将01上的hadoop分发到02,03
使用scp进行分发同步
cd /opt/software/
scp -r hadoop/ node02:$PWD
scp -r hadoop/ node03:$PWD
之前只在01上配置了hadoop环境变量,现在需要在02和03上添加hadoop环境变量
vi /etc/profile
#添加配置文件
export HADOOP_HOME=/opt/software/hadoop/hadoop-2.9.2
export PATH=${PATH}:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
配置完后添加位置文件使配置生效
source /etc/profile
在01上进行格式化
hdfs namenode -format
只在01上启动即可
start-dfs.sh
jps
使用浏览器访问管理台
链接: http://192.168.67.110:50070/
创建目录
cd /opt/software/hadoop/hadoop-2.9.2/etc/hadoop/
hdfs dfs -mkdir /test
cd /opt/
mkdir testData
cd testData/
mkdir hdfs
cd hdfs
上传文件将文件拖入Xshell中即可
文件上传后检查datanode节点情况
!!!注意在完成所有步骤后在虚拟机中拍摄快照,如果出现问题可以从快照中恢复。
1.配置文件时,Hadoop的目录是
/opt/software/hadoop/hadoop-2.9.2/etc/hadoop
2.注意在分发hadoop文件后要配置02,03的环境变量,并重新加载。
3.若虚拟机出现启动时输入密码后出现无法登录,可能是该虚拟机的配置文件出了问题,挑选一个好的虚拟机分发配置文件,并重新加载。
scp -r /etc/profile node03:$PWD
以上就是HDFS完全分布式集群搭建的大概流程,有许多问题没有遇到,可能问题写的不够详细,如果有文章和流程中有任何的问题以及心得欢迎评论交流。