系统和软件环境要求
安装软件版本号:
Hadoop:3.2.1
Java:java version "1.8.0_251"
系统:CentOS7
本地模式安装
Java环境配置
下载Java JDK
Hadoop依赖Java环境,需要优先配置好JDK环境,由于国外下载速度一般很慢,这里选择国内镜像站华为云镜像下载JDK,如下
wget https://repo.huaweicloud.com/java/jdk/8u181-b13/jdk-8u181-linux-x64.tar.gz
部署Java JDK
解压/software/ 目录下
tar -zxvf jdk-8u181-linux-x64.tar.gz -C /software/
cd /software/
mv /software/jdk-8u181-linux-x64 java
配置Java环境变量
# 配置环境变量一般有三种,这里选择更为方便的/etc/profile.d/xxx.sh的方式,具体区别可百度
vim /etc/profile.d/java.sh
#添加如下环境变量
export JAVA_HOME=/software/java
export PATH=$PATH:$JAVA_HOME/bin
# 使配置生效
source /etc/profile
Hadoop环境配置
Hadoop安装方式与Java类似,这里选择国内镜像源清华大学镜像站
下载Hadoop
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz
部署Hadoop
解压/software/ 目录下
tar -zxvf hadoop-3.2.1.tar.gz -C /software/
cd /software/
mv /software/hadoop-3.2.1.tar.gz hadoop
Hadoop环境变量配置
- 配置Hadoop环境变量,有很多环境变量,都是后续需要用到的,这里先提前添加进去
vim /etc/profile.d/hadoop.sh
export HADOOP_HOME=/software/hadoop
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH::$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOOME/sbin:$HADOOP_HOME/lib
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
# 使配置生效
source /etc/profile
- 配置hadoop-env.sh,添加Java环境
vim ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/software/java
- 配置core-site.xml
vim ${HADOOP_HOME}/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.7.223:8020</value> # 这里可以用主机HostName代替,搭建集群版时应改为HostName方便区分
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/software/data/tmp</value> #为了安全起见,这里应更换一下已经存在的专门存放元数据的临时目录
</property>
</configuration>
- fs.defaultFS参数配置的是HDFS的地址
- hadoop.tmp.dir配置的是Hadoop临时目录,比如HDFS的NameNode数据默认都存放这个目录下,查看*-default.xml等默认配置文件,就可以看到很多依赖{user.name}`,此时有个问题就是NameNode会将HDFS的元数据存储在这个/tmp目录下,如果操作系统重启了,系统会清空/tmp目录下的东西,导致NameNode元数据丢失,是个非常严重的问题,所有我们应该修改这个路径。
配置、格式化、启动HDFS
- 配置hdfs-site.xml
vim ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
dfs.replication配置的是HDFS存储时的备份数量,因为这里是伪分布式环境只有一个节点,所以这里设置为1。
- 格式化HDFS
cd /software/hadoop
bin/hdfs namenode –format
#这个命令也可以用,3.0版本可能有变化,部署时会提示,当初忘记记录了,先就这么记录着
格式化是对HDFS这个分布式文件系统中的DataNode进行分块,统计所有分块后的初始元数据的存储在NameNode中。
常见问题:
- hadoop.tmp.dir目录的权限问题,解决方式就是把${HADOOP_HOME}/etc/hadoop/core-site.xml配置中的目录赋予hadoop用户所有者权限sudo chown -R hadoop:hadoop /software/data/tmp
查看NameNode格式化后的目录
-rw-rw-r--. 1 hadoop hadoop 3904 Aug 15 10:15 fsimage_0000000000000000346
-rw-rw-r--. 1 hadoop hadoop 62 Aug 15 10:15 fsimage_0000000000000000346.md5
-rw-rw-r--. 1 hadoop hadoop 4 Aug 15 10:36 seen_txid
-rw-rw-r--. 1 hadoop hadoop 212 Aug 12 18:09 VERSION
fsimage是NameNode元数据在内存满了后,持久化保存到的文件。
fsimage*.md5 是校验文件,用于校验fsimage的完整性。
seen_txid 是hadoop的版本
vession文件里保存:
- namespaceID:NameNode的唯一ID。
- clusterID:集群ID,NameNode和DataNode的集群ID应该一致,表明是一个集群。
- 启动NameNode
#3.0版本
hdfs --daemon start namenode
hdfs --daemon start secondarynamenode
hdfs --daemon start datanode
#2.0版本,在3.0中使用时能用,系统提示可以用新方式启动
${HADOOP_HOME}/sbin/hadoop-daemon.sh start namenode
${HADOOP_HOME}/sbin/hadoop-daemon.sh start datanode
${HADOOP_HOME}/sbin/hadoop-daemon.sh start secondarynamenode
- JPS命令查看是否已经启动成功
[hadoop@localhost ~]$ jps
2660 NameNode
3268 SecondaryNameNode
5672 Jps
2972 DataNode
HDFS上测试创建目录、上传、下载文件
HDFS上创建目录
bin/hadoop fs -mkdir -p /dbtaobao/dataset
HDFS上传文件
bin/hadoop fs -put /usr/local/dbtaobao/dataset/train_after.csv /dbtaobao/dataset
HDFS下载文件
bin/hadoop fs -put /dbtaobao/dataset/train_after.csv /本地目录位置 #不写默认是执行命令的目录
HDFS删除文件/文件夹
#删除文件
bin/hadoop fs -rm /dbtaobao/dataset/train_after.csv
#删除文件夹
bin/hadoop fs -rm -r /dbtaobao/dataset/train_after.csv
参考
本文只是简单记录,参考价值不高,具体详细参考: