1 伪分布模式

伪分布模式是运行在单个节点以及多个Java过程上的模式。相比起本地模式,须要进行更多配置文件的设置以及sshYARN相干设置。

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的文件如下:

文件阐明如下:

  • fsimageNameNode元数据在内存满后,长久化保留到的文件
  • fsimage*.md5:校验文件,用于校验fsimage的完整性
  • seen_txid:寄存transactionID文件,format之后为0,示意NameNode外面的edits_*文件的尾数
  • VERSION:保留创立工夫,namespaceIDblockpoolIDstorageTypecTimeclusterIDlayoutVersion

对于VERSION的阐明:

  • namespaceIDHDFS惟一标识符,在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阐明