博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hadoop:11.Apache HDFS搭建(单Master节点)
阅读量:3903 次
发布时间:2019-05-23

本文共 7037 字,大约阅读时间需要 23 分钟。

环境

[09:10:01 root@ceshi-01 ~ $]cat /etc/system-releaseCentOS Linux release 7.6.1810 (Core)[09:10:19 root@ceshi-01 ~ $]hadoop versionHadoop 3.1.2Source code repository https://github.com/apache/hadoop.git -r 1019dde65bcf12e05ef48ac71e84550d589e5d9aCompiled by sunilg on 2019-01-29T01:39ZCompiled with protoc 2.5.0From source with checksum 64b8bdd4ca6e77cce75a93eb09ab2a9This command was run using /home/hadoop-3.1.2/share/hadoop/common/hadoop-common-3.1.2.jar

简介

HDFS 的守护进程包括:NameNode, SecondaryNameNode, and DataNodeYARN 的守护进程包括:ResourceManager, NodeManager, and WebAppProxy如果要使用 MapReduce,则 MapReduce Job History Server 也将运行在大型集群里,他们通常运行在不同的节点上

配置文件

只读默认配置文件:core-default.xml, hdfs-default.xml, yarn-default.xml and mapred-default.xml具体节点的配置文件:etc/hadoop/core-site.xml, etc/hadoop/hdfs-site.xml, etc/hadoop/yarn-site.xml and etc/hadoop/mapred-site.xml此外您可以通过编辑 etc/hadoop/hadoop-env.sh and etc/hadoop/yarn-env.sh 设定特定的值来使用

第零步:准备工作

1.关闭系统防火墙和 SELinux

setenforce 0sed -i -r "/^SELINUX=/c SELINUX=disabled" /etc/selinux/configwhich systemctl && systemctl stop firewalldwhich systemctl && systemctl disable firewalldwhich systemctl && systemctl stop iptables || service iptables stopwhich systemctl && systemctl disable iptables || chkconfig iptables off

2.所有服务器设置 hosts

192.168.30.111 ceshi-01192.168.30.112 ceshi-02192.168.30.113 ceshi-03192.168.30.114 ceshi-04192.168.30.114 ceshi-05192.168.30.114 ceshi-06

3.设置互信

## 要求 Master 节点可以免密登录到 Worker 节点和登录本机## 生成秘钥ssh-keygen##ssh-copy-id ceshi-01ssh-copy-id ceshi-02ssh-copy-id ceshi-03ssh-copy-id ceshi-04ssh-copy-id ceshi-05ssh-copy-id ceshi-06

第一步:下载

1.下载

wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.1.2/hadoop-3.1.2.tar.gztar vxzf hadoop-3.1.2.tar.gz包括以下模块:    Hadoop Common:支持 Hadoop 模块的常用命令    Hadoop Distributed File System (HDFS™):一种分布式文件系统,可以提供高吞吐访问    Hadoop YARN:作业调度和集群资源管理框架    Hadoop MapReduce:基于 YARN 的系统,用于并行处理大型数据集    Hadoop Ozone:Hadoop 的对象存储    Hadoop Submarine:Hadoop 机器学习引擎

2.设置 JAVA_HOME 变量

根据自己情况修改路径

## 此文件在 Hadoop 文件夹内vim etc/hadoop/hadoop-env.shexport JAVA_HOME=/usr

3.设置 HADOOP_HOME 和 HADOOP_HDFS_HOME 变量

根据自己实际情况修改路径

echo 'export HADOOP_HOME=/home/hadoop-3.1.2/' >> /root/.bash_profile echo 'PATH=$PATH:$HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> /root/.bash_profilesource /root/.bash_profileecho 'export HADOOP_HDFS_HOME=/home/hadoop-3.1.2/' >> /root/.bash_profile echo 'PATH=$PATH:$HOME/bin:HADOOP_HDFS_HOME/bin:HADOOP_HDFS_HOME/sbin' >> /root/.bash_profilesource /root/.bash_profile

4.运行命令以验证

## 此命令将显示 hadoop 脚本使用说明hadoop

第二步:修改配置文件

1.设置 Hadoop 守护进程的环境变量

JAVA_HOME 必须设置

以下两个路径可以不修改

## In most cases, you should specify the HADOOP_PID_DIR and HADOOP_LOG_DIR directories such that they can only be written to by the users that are going to run the hadoop daemons. ## Otherwise there is the potential for a symlink attack.## 在大多数情况下,您应该指定HADOOP_PID_DIR和HADOOP_LOG_DIR目录,以便它们只能由将要运行hadoop守护程序的用户写入。否则就有可能发生符号链接攻击。cp etc/hadoop/hadoop-env.sh etc/hadoop/hadoop-env.sh.bakcat <<\EOF >>etc/hadoop/hadoop-env.sh## 设置 JAVA_HOMEexport JAVA_HOME=/usr## 存储守护程序日志文件。如果日志文件不存在,则会自动创建export HADOOP_LOG_DIR=/var/log/hadoop/## 设置守护进程的进程标识文件目录export HADOOP_PID_DIR=/tmpEOF

2.设置 Hadoop 守护进程 - core-site.xml

根据自己情况修改 NameNode URI

根据自己情况修改路径

cp etc/hadoop/core-site.xml etc/hadoop/core-site.xml.bakcat <<\EOF >>etc/hadoop/core-site.xml
fs.defaultFS
hdfs://192.168.30.111:9000
hadoop.tmp.dir
/home/Data/nn/
io.file.buffer.size
131072
EOF

3.设置 Hadoop 守护进程 - hdfs-site.xml

修改默认副本数量

修改路径

修改块大小

cp etc/hadoop/hdfs-site.xml etc/hadoop/hdfs-site.xml.bakcat <<\EOF >>etc/hadoop/hdfs-site.xml
dfs.replication
1
dfs.namenode.name.dir
/home/Data/nn/
dfs.blocksize
134217728
dfs.namenode.handler.count
100
dfs.datanode.data.dir
/home/Data/nd/
EOF

第三步:手动启动 HDFS 集群(和第四步任选一)

1.启动 HDFS 集群

## 1.第一次启动 HDFS 时,必须对其进行格式化,将新的分布式文件系统格式化为 hdfs$HADOOP_HOME/bin/hdfs namenode -format 
## 2.在指定节点上运行用下命令启动 HDFS NameNode$HADOOP_HOME/bin/hdfs --daemon start namenode## 3.在每个指定节点上执行以下命令启动 HDFS DataNode$HADOOP_HOME/bin/hdfs --daemon start datanode## 4.如果配置了 etc/hadoop/workers 则可以使用以下启动脚本启动所有节点的 HDFS 进程$HADOOP_HOME/sbin/start-dfs.sh

2.停止 HDFS 集群

## 1.在指定节点上执行以下命令停止 NameNode$HADOOP_HOME/bin/hdfs --daemon stop namenode## 2.在指定节点上执行以下命令停止 DataNode$HADOOP_HOME/bin/hdfs --daemon stop datanode## 3.如果设置了 etc/hadoop/workers 可以使用以下命令停止所有节点 HDFS 进程$HADOOP_HOME/sbin/stop-dfs.sh

3.登录 Web 页面查看集群信息

## NameNode Web UI:http://192.168.30.111:9870## DataNode Web UI:http://192.168.30.111:9864

4.通过 Hadoop Shell 查看和操作目录

hadoop fs -ls /hadoop fs -mkdir /test

第四步:配置 etc/hadoop/workers 通过一键脚本启动(和第三步任选一)

1.修改配置文件(by nn)

## 每行一个主机名,不要有空格(此文件定义所有需要启动 DataNode 实例的主机列表)## NameDone 和 SecondaryNameNode 默认为当前主机cat <<\EOF >etc/hadoop/workersceshi-01ceshi-02ceshi-03EOF## 在顶部添加以下行vim $HADOOP_HOME/sbin/start-dfs.shHDFS_NAMENODE_USER=rootHDFS_SECONDARYNAMENODE_USER=rootHDFS_DATANODE_USER=rootHDFS_DATANODE_SECURE_USER=root## 在顶部添加以下行vim $HADOOP_HOME/sbin/stop-dfs.shHDFS_NAMENODE_USER=rootHDFS_SECONDARYNAMENODE_USER=rootHDFS_DATANODE_USER=rootHDFS_DATANODE_SECURE_USER=root

2.第一次启动 HDFS 时,必须对其进行格式化,将新的分布式文件系统格式化为 hdfs

$HADOOP_HOME/bin/hdfs namenode -format 

3.使用命令启动和停止集群

## 启动所有节点的 HDFS 进程$HADOOP_HOME/sbin/start-dfs.sh## 停止所有节点 HDFS 进程$HADOOP_HOME/sbin/stop-dfs.sh    ## 主节点执行启动命令    [09:14:46 root@ceshi-01 ~ $]$HADOOP_HOME/sbin/start-dfs.sh    Starting namenodes on [ceshi-01]    ceshi-01: WARNING: /var/log/hadoop/ does not exist. Creating.    Starting datanodes    ceshi-02: WARNING: /var/log/hadoop/ does not exist. Creating.    ceshi-03: WARNING: /var/log/hadoop/ does not exist. Creating.    Starting secondary namenodes [ceshi-01]    ## 主节点查看进程    [09:45:36 root@ceshi-01 ~ $]jps    25842 NameNode    26132 DataNode    26375 SecondaryNameNode    26538 Jps    ## Worker 节点查看进程    [09:16:08 root@ceshi-02 ~ $]jps    12580 Jps    12312 DataNode    ## 主节点执行停止命令(执行成功后所有节点 HDFS 相关进程退出)    [09:17:02 root@ceshi-01 ~ $]$HADOOP_HOME/sbin/stop-dfs.sh    Stopping namenodes on [ceshi-01]    Stopping datanodes    Stopping secondary namenodes [ceshi-01]

4.登录 Web 页面查看集群信息

## NameNode Web UI:http://192.168.30.111:9870## DataNode Web UI:http://192.168.30.111:9864

附录:

## 获取 NameNodes 列表"${HADOOP_HDFS_HOME}/bin/hdfs" getconf -namenodes##

附录:Web 接口

Daemon          Web Interface           NotesNameNode	    http://nn_host:port/	Default HTTP port is 9870.DataNode        http://nd_host:port/    Default HTTP port is 9864.

转载地址:http://wcten.baihongyu.com/

你可能感兴趣的文章
SublimeText, Eclipse, Liteide--Golang开发环境搭建(Windows版)
查看>>
Java 反射概述
查看>>
Java集合工具
查看>>
Java集合工具2--Arrays
查看>>
SpringMVC原理探索,从DispatcherServlet开始
查看>>
Golang学习笔记:语言规范之词汇元素和类型
查看>>
Golang学习笔记:语言规范之类型(续)
查看>>
Golang学习笔记:语言规范之声明与作用域
查看>>
Golang学习笔记:语言规范二
查看>>
Java ThreadPoolExecutor线程池原理及源码分析
查看>>
Java ThreadLocal原理与源码
查看>>
走近AbstractQueuedSynchronizer
查看>>
aqs
查看>>
Thinking in Spring
查看>>
Java IO模型&NIO
查看>>
Thinking in Netty
查看>>
Java TPS实现
查看>>
Log4j2写日志的艺术
查看>>
C++ Primer Plus 第六版学习笔记第三章
查看>>
c++ Primer Plus 第六版第四章学习笔记
查看>>