Hadoop有三种操作模式,分别为单机模式,伪分布模式和全分布模式。
本文简单介绍和区分三种操作模式,并参考网上的文章,记录自己搭建伪分布模式集群的过程。
最后使用hadoop提供的example程序尝试运行。
单机模式
NameNode
、DataNode
等守护进程,MapTask和ReduceTask作为同一进程的不同部分来执行伪分布模式
操作是指在“单节点集群”上运行Hadoop,即一台主机模拟多台主机,NameNode
、DataNode
等守护进程都运行在同一台机器上,是相互独立的Java进程
该模式在单机模式操作之上多了代码调试功能,可以查阅内存的使用情况、HDFS的输入输出以及守护进程之间的交互
全分布模式
系统:ubuntu16.04
JDK版本:jdk1.8.0_201
hadoop版本:hadoop-2.6.5
jdk-8u201-linux-x64.tar.gz
/opt/jdk1.8.0_201
,若对/opt
没有权限,可以使用chown命令修改拥有者tar -xf jdk-8u201-linux-x64.tar.gz #解压
(chown [用户名] /opt) #修改拥有者
mv jdk1.8.0_201 /opt/ #移动到opt目录下
vim /etc/profile #打开配置文件
#添加两行代码
export JAVA_HOME=/opt/jdk1.8.0_201
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
java -version #检查是否安装成功
.bashrc
文件,使得每次启动时自动执行激活环境变量的操作,如下:vim ~/.bashrc
#在文件最后增加一句
source /etc/profile
hadoop-2.6.5.tar.gz
/opt/hadoop-2.6.5
tar -xf hadoop-2.6.5.tar.gz
mv hadoop-2.6.5 /opt/
ln -snf hadoop-2.6.5 hadoop #创建软链接
vim /etc/profile
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
hadoop version #检查是否安装成功
修改过程需要把#后的内容去掉,此处仅为个人理解而添加
/opt/hadoop/etc/hadoop
中cd /opt/hadoop/etc/hadoop
JAVA_HOME
,设置为与上述JDK配置时一致#export JAVA_HOME=${JAVA_HOME} #注释掉原来的
export JAVA_HOME=/opt/jdk1.8.0_201
fs.defaultFS
hdfs://192.168.1.165:9000
修改hdfs-site.xml,同样修改最后的configuration如下:
关于这里的checkpoint,可以参考解读Secondary NameNode的功能
dfs.nameservices
hadoop-cluster
dfs.namenode.name.dir
file:///data/hadoop/hdfs/nn #namenode目录
dfs.namenode.checkpoint.dir
file:///data/hadoop/hdfs/snn
dfs.namenode.checkpoint.edits.dir
file:///data/hadoop/hdfs/snn
#edit文件目录,用于secondary namenode更新fsimage
dfs.datanode.data.dir
file:///data/hadoop/hdfs/dn #datanode目录
cp mapred-site.xml.template mapred-site.xml
mapreduce.framework.name
yarn #资源调度框架设置为YARN
mapreduce.jobhistory.address
localhost:10020
mapreduce.jobhistory.webapp.address
localhost:19888
mapreduce.jobhistory.intermediate-done-dir
/history/done_intermediate
mapreduce.jobhistory.done-dir
/history/done
yarn.resourcemanager.hostname #RM主机
192.168.1.165
yarn.nodemanager.aux-services
mapreduce_shuffle #MapReduce程序所需的Shuffle service
yarn.nodemanager.local-dirs
file:///data/hadoop/yarn/nm #NM本地目录
yarn.log-aggregation-enable
true
sudo mkdir -p /data/hadoop/hdfs/nn
sudo mkdir -p /data/hadoop/hdfs/dn
sudo mkdir -p /data/hadoop/hdfs/snn
sudo mkdir -p /data/hadoop/yarn/nm
chown zyc[我的用户名] /opt
chmod -R 777 /data
hdfs namenode -format
启动所需的sh文件都在/opt/hadoop/sbin
中,前面已经将该路径加入环境变量,可直接访问。
hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
hadoop-daemon.sh start secondarynamenode
yarn-daemon.sh start resourcemanager
yarn-daemon.sh start nodemanager
mr-jobhistory-daemon.sh start historyserver
关闭命令只需将上述命令的start改为stop即可
开启时可以使用start-all.sh
,关闭时可以使用stop-dfs.sh
,stop-yarn.sh
yarn jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar pi 4 10000