hadoop学习笔记 - HDFS - 伪分布式模式
准备工作
- 伪分布式 当然就一台机器哈,后面继续学习,多台机器
- 虚拟机提前配置好JDK 1.8.x (jdk配置就不多说了)不会的给个传送门:https://www.jianshu.com/p/8cbea338b4ef
- 下载hadoop包,传送门:https://archive.apache.org/dist/hadoop/common/
这里使用的是:hadoop-hadoop-2.10.0.tar.gz为案例 版本选在根据自己的需求来。
下载需要の包 && 配置jdk环境
解压包 && 配置环境
tar -zxvf hadoop-2.10.0.tar.gz -C /opt/module/
vim /etc/profile
##JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_231
export PATH=$PATH:$JAVA_HOME/bin
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.10.0
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
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_INSTALL=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_CONF_DIR=$HADOOP_HOME
export HADOOP_HOME=$HADOOP_HOME
export HADOOP_LIBEXEC_DIR=$HADOOP_HOME/libexec
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
source /etc/profile
其实hadoop的各个文件的配置官网文档基本都有讲解,传送门:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html
配置文件
- 进入
/opt/module/hadoop-2.10.0/etc/hadoop
目录,修改hadoop-env.sh
文件 的JAVA_HOME
配置 - 使用
echo $JAVA_HOME
获取当前jdk路径
vim hadoop-env.sh
Hadoop三种模式
Mode | 模式 |
---|---|
Local (Standalone) Mode | 本地(独立)模式 |
Pseudo-Distributed Mode | 伪分布模式 |
Fully-Distributed Mode | 全分布式模式 |
这里我们选择
Pseudo-Distributed Mode
- 伪分布模式
伪分布操作
Configuration
- etc/hadoop/core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop03:9000</value>
<description>HDFS的URI,文件系统://namenode标识:端口</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop</value>
<description>namenode上传到hadoop的临时文件夹</description>
</property>
</configuration>
- etc/hadoop/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>副本个数,默认配置是3,应小于datanode机器数量</description>
</property>
</configuration>
设置无密码ssh
- 现在检查您是否可以在不使用密码短语的情况下通过ssh连接到本地主机:
ssh localhost
- 如果没有密码短语无法通过ssh连接到本地主机,请执行以下命令:
# 产生密钥对,-t 指定生成的密钥类型 -P 旧密码 -f 保存密钥的文件
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
# 将产生的公钥追加到authorized_keys文件
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 修改文件权限
chmod 0600 ~/.ssh/authorized_keys
# 执行以上操作后可以实现免密登录本机
ssh localhost
# 实现远程免密登录,需要将本机公钥拷贝到远程机器,username@ip或者username@hostname
ssh-copy-id -i ~/.ssh/id_rsa.pub root@hadoop01
# 免密验证
ssh root@hadoop01
Execution 启动
-
- 格式化文件系统(Format the filesystem)
[root@hadoop03 hadoop-2.10.0]# ./bin/hdfs namenode -format
-
- 启动NameNode后台程序和DataNode后台程序
[root@hadoop03 hadoop-2.10.0]# ./sbin/start-dfs.sh
hadoop守护进程日志输出被写入
$hadoop_log_DIR
目录(默认为$hadoop_HOME/logs
)。
[root@hadoop03 hadoop-2.10.0]# ./sbin/start-dfs.sh
20/05/10 18:24:08 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [hadoop03]
hadoop03: starting namenode, logging to /opt/module/hadoop-2.10.0/logs/hadoop-root-namenode-hadoop03.out
localhost: starting datanode, logging to /opt/module/hadoop-2.10.0/logs/hadoop-root-datanode-hadoop03.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /opt/module/hadoop-2.10.0/logs/hadoop-root-secondarynamenode-hadoop03.out
20/05/10 18:24:25 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
[root@hadoop03 hadoop-2.10.0]# jps
6032 DataNode
5905 NameNode
2804 QuorumPeerMain
6199 SecondaryNameNode
6317 Jps
[root@hadoop03 hadoop-2.10.0]#
-
- 浏览NameNode的web界面
NameNode -> http://192.168.2.34:50070/
- 浏览NameNode的web界面
-
- 创建执行MapReduce作业所需的HDFS目录
$ bin/hdfs dfs -mkdir /user
$ bin/hdfs dfs -mkdir /user/<username>
-
- 将输入文件复制到分布式文件系统中
$ bin/hdfs dfs -mkdir input
$ bin/hdfs dfs -put etc/hadoop/*.xml input
-
- 运行提供的一些示例
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.0.jar grep input output 'dfs[a-z.]+'
-
- 检查输出文件:将输出文件从分布式文件系统复制到本地文件系统并检查它们
$ bin/hdfs dfs -get output output
$ cat output/*
or
$ bin/hdfs dfs -cat output/*
-
- 完成后,使用以下命令停止守护程序
$ sbin/stop-dfs.sh
YARN on a Single Node
- 配置参数如下 - mapred-site.xml 复制 mapred-site.xml.template
- etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop03:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop03:19888</value>
</property>
</configuration>
- etc/hadoop/mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_231
- etc/hadoop/yarn-site.xml:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
- etc/hadoop/yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_231
- 启动ResourceManager后台程序和NodeManager后台程序
$ sbin/start-yarn.sh
-
浏览ResourceManager的web界面
ResourceManager - http://hadoop03:8088/cluster
-
完成后,使用以下命令停止守护程序
$ sbin/stop-yarn.sh
最后提醒一下
- 多看官方文档
- 启动或关闭进程 多使用 jps 查看