系统和软件环境要求
安装软件版本号:
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等默认配置文件,就可以看到很多依赖 h a d o o p . t m p . d i r 的 配 置 。 默 认 的 ‘ h a d o o p . t m p . d i r ‘ 是 ‘ / t m p / h a d o o p − {hadoop.tmp.dir}的配置。默认的`hadoop.tmp.dir`是`/tmp/hadoop- hadoop.tmp.dir的配置。默认的‘hadoop.tmp.dir‘是‘/tmp/hadoop−{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
参考
本文只是简单记录,参考价值不高,具体详细参考:
https://www.cnblogs.com/liuyangfirst/p/6257473.html
https://blog.csdn.net/hliq5399/article/details/78193113