1 伪分布模式
伪分布模式是运行在单个节点以及多个Java过程上的模式。相比起本地模式,须要进行更多配置文件的设置以及ssh
、YARN
相干设置。
2 Hadoop
配置文件
批改Hadoop
装置目录下的三个配置文件:
etc/hadoop/core-site.xml
etc/hadoop/hdfs-site.xml
etc/hadoop/hadoop-env.sh
2.1 core-site.xml
首先批改core-site.xml
:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/tmp</value> </property></configuration>
fs.defaultFS
设置的是HDFS
的地址,设置运行在本地的9000
端口上hadoop.tmp.dir
设置的是长期目录,如果没有设置的话默认在/tmp/hadoop-${user.name}
中,零碎重启后会导致数据失落,因而批改这个长期目录的门路
接着创立该长期目录:
mkdir -p /usr/local/hadoop/tmp
2.2 hdfs-site.xml
接着批改hdfs-site.xml
:
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property></configuration>
dfs.replication
设置的是HDFS
存储的长期备份数量,因为伪分布模式中只有一个节点,所以设置为1
。
2.3 hadoop-env.sh
批改该文件增加JAVA_HOME
环境变量,就算JAVA_HOME
在
~/.bashrc
~/.bash_profile
/etc/profile
等中设置了,运行时也是会提醒找不到JAVA_HOME
,因而须要手动在hadoop-env.sh
中设置JAVA_HOME
:
3 本地无明码ssh
连贯
下一步须要设置本地无明码ssh
连贯,首先先查看确保开启sshd
服务:
systemctl status sshd
开启后能够间接localhost
连贯:
ssh localhost
输出本人的用户明码后就能够拜访了,然而这里须要的是无明码连贯,因而配置密钥认证连贯的形式:
ssh-keygen -t ed25519 -a 100 cat ~/.ssh/id_25519.pub >> ~/.ssh/authorized_keyschmod 0600 ~/.ssh/authorized_keys
这里生成公私钥后把公钥增加到authorized_keys
中,并且批改权限,须要留神600
权限,只能本用户有写权限。
而后间接ssh localhost
就能够连贯本地主机了。
4 运行
4.1 格式化HDFS
这里以繁多节点的模式运行,首先格式化HDFS
:
# HADOOP为Hadoop装置目录HADOOP/bin/hdfs namenode -format
格式化是对HDFS
中的DataNode
进行分块,统计所有分块后的初始元数据,存储在NameNode
中。
格式化胜利后会在下面配置文件中设置的长期目录中生成dfs
目录,如下所示:
外面只有一个目录:dfs/name/current
,其中tmp/dfs/name/current
的文件如下:
文件阐明如下:
fsimage
:NameNode
元数据在内存满后,长久化保留到的文件fsimage*.md5
:校验文件,用于校验fsimage
的完整性seen_txid
:寄存transactionID
文件,format
之后为0,示意NameNode
外面的edits_*
文件的尾数VERSION
:保留创立工夫,namespaceID
、blockpoolID
、storageType
、cTime
、clusterID
、layoutVersion
对于VERSION
的阐明:
namespaceID
:HDFS
惟一标识符,在HDFS
首次格式化后生成blockpoolID
:标识一个block pool
,跨集群全局惟一storageType
:存储什么过程的数据结构信息cTime
:创立工夫clusterID
:系统生成或指定的集群ID
,能够应用-clusterid
指定layoutVersion
:示意HDFS
永久性数据结构版本的信息
4.2 启动NameNode
HADOOP/sbin/start-dfs.sh
而后能够通过
localhost:9870
拜访NameNode
:
4.3 测试
生成输出目录,并应用配置文件作为输出:
bin/hdfs dfs -mkdir /userbin/hdfs dfs -mkdir /user/USER_NAME # USER_NAME为您的用户名bin/hdfs dfs -mkdir inputbin/hdfs dfs -put etc/hadoop/*.xml input
测试:
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar grep input output 'dfs[a-z.]+'
获取输入:
bin/hdfs dfs -get output output # 复制输入到output目录cat output/*
进行:
sbin/stop-hdfs.sh
5 应用YARN
配置
除了能够将单个节点以伪分布模式启动,还能够通过YARN
对立调度,只须要适当批改配置文件。
5.1 配置文件
批改以下文件:
HADOOP/etc/hadoop/mapred-site.xml
HADOOP/etc/hadoop/yarn-site.xml
5.1.1 mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.application.classpath</name> <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value> </property></configuration>
mapreduce.framework.name
指定了MapReduce
运行在YARN
上mapreduce.application.classpath
指定了类门路
5.1.2 yarn-site.xml
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value> </property></configuration>
yarn.nodemanager.aux-services
:运行在NodeManager
上运行的从属服务yarn.nodemanager.env-whitelist
:环境变量通过从NodeManagers
的容器继承的环境属性
5.2 运行
sbin/start-yarn.sh
运行后就能够通过
localhost:8088
拜访:
进行:
sbin/stop-yarn.sh
6 参考
- Hadoop3.3.0官网文档
- CSDN-GitChat·大数据 | 史上最具体的Hadoop环境搭建
- CSDN-Hadoop Namenode元数据文件 Fsimage、editlog、seen_txid阐明