简介:Hadoop是一种分析和处理大数据的软件平台,是Appach开源软件的一个架构,在大量计算机组成的集群当中实现了对于海量的数据进行的分布式计算。Hadoop框架最核心的设计就是HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
Hadoop使用主/从(Master/Slave)架构,主要有NameNode,DataNode,secondary NameNode,JobTracker,TaskTracker五种角色。其中NameNode,secondary NameNode,JobTracker三种角色运行在Master节点上,其余的两种角色DataNode和TaskTracker运行在Slave节点上。
在集群中每个从服务器都运行一个DataNode后台程序,后台程序负责把HDFS数据块读写到本地文件系统。需要读写数据时,由NameNode告诉客户端去哪个DataNode进行具体的读写操作。而NameNode是HDFS的守护程序,负责记录文件是如何分割成数据块的,以及这些数据块被存储到哪些数据节点上。它的功能是对内存及I/O进行集中管理。另外,Secondary NameNode是一个用来监控HDFS状态的辅助后台程序,如果NameNode发生问题,可以使用Secondary NameNode作为备用的NameNode。JobTracker后台程序用来连接应用程序与Hadoop,用户应用提交到集群后,由JobTracker决定哪个文件处理哪个task执行,一旦某个task失败,JobTracker会自动开启这个task。而位于从节点的TaskTracker负责存储数据的DataNode相结合,负责各自的Task。
本文将介绍在容器Docker中安装和部署Hadoop大数据集群的过程,详细内容请参考下文。
一、登陆Linux系统
二、查看Docker运行状态
执行指令# systemctl status docker查看Docker的运行状态。如下图
三、使用docker部署Hadoop
1、抽取Hadoop镜像
执行指令# docker pull
kiwenlau/hadoop-master:0.1.0。如下图
2、下载Hadoop代码
执行指令# git clone
https://github.com/kiwenlau/hadoop-cluster-docker下载代码。如下图
3、创建Hadoop网桥
执行指令# docker network create hadoop。如下图
4、启动Hadoop容器
执行指令# sh start-container.sh。如下图
备注:一共开启了3个容器,1个master, 2个slave。
5、开启Hadoop服务
(1)、查看master的root用户家目录的文件
备注:start-hadoop.sh是开启hadoop的shell脚本,而run-wordcount.sh是运行wordcount的shell脚本,可以测试镜像是否正常工作。
(2)、执行指令# sh start-hadoop.sh开启Hadoop服务。如下图
备注:这一步会ssh连接到每一个节点,确保ssh信任是正常的。
6、开启Wordcount服务
执行指令# sh run-wordcount.sh开启Wordcount服务。如下图
四、Hadoop常见配置文件
1、core-site.xml
执行指令# cd
/usr/local/hadoop/etc/hadoop。如下图
2、hdfs-site.xml
备注:这里是配置一个Master节点和两个Slave节点。所以dfs.replication配置为2。dfs.namenode.name.dir和dfs.datanode.data.dir分别配置为NameNode和DataNode的目录路径。
3、mapred-site.xml
备注:这里指定运行mapreduce的环境是yarn。
4、hadoop-env.sh
备注:这里必须要指定java的路径。否则启动Hadoop时,提示找不到变量JAVA_HOME。
五、Hadoop访问测试
1、访问Hadoop管理页面
在浏览器输入以下地址:
http://服务器IP地址:8088/cluster/nodes
访问界面如下:
2、访问HDFS管理页面
在浏览器输入以下地址:
http://服务器IP地址:50070/
访问界面如下:
3、访问HDFS内容页面
在浏览器输入以下地址:
http://服务器IP地址:50070/explorer.html#/
备注:由于默认开启了安全默认,默认是没有权限查看文件的。需要关闭安全模式才行。
4、关闭安全访问模式
(1)、进入hadoop-master容器,执行指令
# hadoop dfsadmin -safemode leave
(2)、授权tmp文件权限,执行指令
# hdfs dfs -chmod -R 755 /tmp
5、重新访问HDFS内容页面
访问tmp目录。如下图
访问user目录。如下图
备注:HDFS存放目录为:/root/hdfs。如果需要做持久化,将此目录开放出来。