Hadoop之配置伪分布式集群

Dear 丶 2022-06-02 05:09 314阅读 0赞

1、配置Hadoop环境变量

  1. [hadoop@bigdata-senior01 hadoop]# vim /etc/profile

追加配置:

  1. export HADOOP_HOME="/opt/modules/hadoop-2.9.0"
  2. export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

执行:source /etc/profile 使得配置生效

验证HADOOP_HOME参数:

  1. [root@izuf61z1rt2fvuhr3u07s0z ~]# echo $HADOOP_HOME
  2. /opt/modules/hadoop-2.9.0

2、 配置 hadoop-env.sh、mapred-env.sh、yarn-env.sh文件的JAVA_HOME参数

  1. vim ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh

修改JAVA_HOME参数为:

  1. export JAVA_HOME="/opt/modules/jdk1.7.0_79"

3、 配置core-site.xml

  1. <configuration>
  2. <property>
  3. <name>fs.defaultFS</name>
  4. <value>hdfs://localhost:9000</value>
  5. </property>
  6. <property>
  7. <name>hadoop.tmp.dir</name>
  8. <value>/opt/data/tmp</value>
  9. </property>
  10. </configuration>

1、 fs.defaultFS参数配置的是HDFS的地址。
2、 hadoop.tmp.dir配置的是Hadoop临时目录,比如HDFS的NameNode数据默认都存放这个目录下,查看*-default.xml等默认配置文件,就可以看到很多依赖${hadoop.tmp.dir}的配置。

默认的hadoop.tmp.dir是/tmp/hadoop-${user.name},此时有个问题就是NameNode会将HDFS的元数据存储在这个/tmp目录下,如果操作系统重启了,系统会清空/tmp目录下的东西,导致NameNode元数据丢失,是个非常严重的问题,所有我们应该修改这个路径。
创建临时目录:

  1. mkdir -p /opt/data/tmp

将临时目录的所有者修改为hadoop

  1. sudo chown R hadoop:hadoop /opt/data/tmp

4、 配置hdfs-site.xml

  1. vim ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
  2. <configuration>
  3. <property>
  4. <name>dfs.replication</name>
  5. <value>1</value>
  6. </property>
  7. <property>
  8. <name>dfs.namenode.name.dir</name>
  9. <value>file:/opt/data/tmp/dfs/name</value>
  10. </property>
  11. <property>
  12. <name>dfs.datanode.data.dir</name>
  13. <value>file:/opt/data/tmp/dfs/data</value>
  14. </property>
  15. <property>
  16. <name>dfs.permissions.enabled</name>
  17. <value>false</value>
  18. </property>
  19. </configuration>

dfs.replication配置的是HDFS存储时的备份数量,因为这里是伪分布式环境只有一个节点,所以这里设置为1。
一开始没有配置dfs.namenode.name.dir和dfs.datanode.data.dir,导致后面namenode没有启动成功,没有配置dfs.permissions.enabled导致上传文件到hdfs权限错误。

5、格式化HDFS

  1. bin/hdfs namenode format

格式化是对HDFS这个分布式文件系统中的DataNode进行分块,统计所有分块后的初始元数据的存储在NameNode中。

格式化后,查看core-site.xml里hadoop.tmp.dir(本例是/opt/data目录)指定的目录下是否有了dfs目录,如果有,说明格式化成功。
注意:

1、格式化时,这里注意hadoop.tmp.dir目录的权限问题,应该hadoop普通用户有读写权限才行,可以将/opt/data的所有者改为hadoop。

  1. sudo chown -R hadoop:hadoop /opt/data

2、查看NameNode格式化后的目录。

  1. ll /opt/data/tmp/dfs/name/current
  2. -rw-rw-r-- 1 hadoop hadoop 399 Jan 27 16:10 fsimage_0000000000000000012
  3. -rw-rw-r-- 1 hadoop hadoop 62 Jan 27 16:10 fsimage_0000000000000000012.md5
  4. -rw-rw-r-- 1 hadoop hadoop 3 Jan 27 16:10 seen_txid
  5. -rw-rw-r-- 1 hadoop hadoop 217 Jan 27 15:06 VERSION

fsimage是NameNode元数据在内存满了后,持久化保存到的文件。

fsimage*.md5 是校验文件,用于校验fsimage的完整性。

seen_txid 是hadoop的版本
vession文件里保存:

namespaceID:NameNode的唯一ID。

clusterID:集群ID,NameNode和DataNode的集群ID应该一致,表明是一个集群。

6、启动

启动NameNode

  1. ${HADOOP_HOME}/sbin/hadoop-daemon.sh start namenode

启动DataNode

  1. ${HADOOP_HOME}/sbin/hadoop-daemon.sh start datanode

启动SecondaryNameNode

  1. ${HADOOP_HOME}/sbin/hadoop-daemon.sh start secondarynamenode

JPS命令查看是否已经启动成功,有结果就是启动成功了。

  1. [root@izuf61z1rt2fvuhr3u07s0z hadoop-2.9.0]# jps
  2. 2913 Jps
  3. 2327 SecondaryNameNode
  4. 2158 DataNode
  5. 2025 NameNode

发表评论

表情:
评论列表 (有 0 条评论,314人围观)

还没有评论,来说两句吧...

相关阅读