目录
- Hadoop分布式计算实验踩坑实录及小结
- 踩坑实录
- Hadoop学习
- Hadoop简介
- HDFS
- Some concepts
- MapReduce
- 主要配置文件
- 集群搭建
- 来源与引用
Hadoop分布式计算实验踩坑实录及小结
踩坑实录
- 单机jdk配置
Ubuntu下安装jdk11,不熟悉apt-get的默认目录及目录配置,直接在Oracle找了Linux的压缩包在虚拟机上解压,解压到指定目录后配一下java环境变量。/etc下的文件写对权限有要求,可以先sudo su
进入root操作。验证命令java -version
- 单机环境配置
- 更改主机名及/etc/hosts文件,为后续ssh提供映射关系,这里默认要完成多机连接的网络环境配置(多机之间要能ping通)
参考链接:多机连接网络环境配置
- ssh配置
有很多操作都涉及到权限问题,要及时做响应的root权限或者返回到user权限。
坑:不用先复制共享密钥以及先配好ssh,后续Hadoop单机先尽可能配置完成再克隆即可,最小化操作冗余。
- 单机Hadoop环境配置
坑:hadoop不要解压到根目录/下,解压到用户目录~/username下,根目录写权限要求高,后续麻烦。
环境变量配置即时生效需要命令source /etc/profile
其他Hadoop配置相比前序流程较为简单,修改配置文件等即可。
- 多机Hadoop文件配置
用masters以及workers文件指定主机即可。
- hdfs操作及wordcount例程
输入输出要在Hadoop文件系统中完成,不是输出到/output目录,该文件夹在hdfs下,用hdfs dfs -cat /output/*
命令查看
最后可以利用Hadoop的分布式计算框架统计出文件中每个词出现次数
Hadoop学习
Hadoop简介
Hadoop 是一个开源的分布式计算和存储框架,由 Apache 基金会开发和维护。Hadoop 使用 Java 开发,所以可以在多种不同硬件平台的计算机上部署和使用。其核心部件包括分布式文件系统 (Hadoop DFS,HDFS) 和 MapReduce。
2003 年和 2004 年,Google 公司先后发表了两篇著名的论文 GFS 和 MapReduce。这两篇论文和 2006 年发表的 BigTable 成为了现在著名的"Google 三大论文"。
Hadoop 在某种程度上将多台计算机组织成了一台计算机(做同一件事),那么 HDFS 就相当于这台计算机的硬盘,而 MapReduce 就是这台计算机的 CPU 控制器。
HDFS
HDFS 高效的存储是通过计算机集群独立处理请求实现的。响应服务器直接分配一个数据服务器给用户,然后用户直接与数据服务器交互,效率会快很多。
数据存储的稳定性往往通过"多存几份"的方式实现,HDFS 也使用了这种方式。HDFS 的存储单位是块 (Block) ,一个文件可能会被分为多个块储存在物理存储器中。因此 HDFS 往往会按照设定者的要求把数据块复制 n 份并存储在不同的数据节点 (储存数据的服务器) 上,如果一个数据节点发生故障数据也不会丢失。
Some concepts
- 命名节点 (NameNode) 是用于指挥其它节点存储的节点。任何一个"文件系统"(File System, FS) 都需要具备根据文件路径映射到文件的功能,命名节点就是用于储存这些映射信息并提供映射服务的计算机,在整个 HDFS 系统中扮演"管理员"的角色,因此一个 HDFS 集群中只有一个命名节点。
- 数据节点 (DataNode) 使用来储存数据块的节点。
- 副命名节点 (Secondary NameNode) 别名"次命名节点",是命名节点的"秘书"。这个形容很贴切,因为它并不能代替命名节点的工作,无论命名节点是否有能力继续工作。它主要负责分摊命名节点的压力、备份命名节点的状态并执行一些管理工作,如果命名节点要求它这样做的话。如果命名节点坏掉了,它也可以提供备份数据以恢复命名节点。副命名节点可以有多个。
MapReduce
映射后规约,映射完成一个子任务,规约是对子任务的合并,有点像归并排序的感觉。
打个比方,你可以把 MapReduce 想象成人口普查,人口普查局会把若干个调查员派到每个城市。每个城市的每个人口普查人员都将统计该市的部分人口数量,然后将结果汇总返回首都。在首都,每个城市的统计结果将被规约到单个计数(各个城市的人口),然后就可以确定国家的总人口。这种人到城市的映射是并行的,然后合并结果(Reduce)。这比派一个人以连续的方式清点全国中的每一个人效率高得多。
主要配置文件
集群搭建
实验中构建了类似下图的一个Hadoop集群
配置文件如下
<configuration>
<property>
// 配置master的端口
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
// 配置临时文件目录
<name>hadoop.tmp.dir</name>
<value>/tmp</value>
</property>
</configuration>
<configuration>
<property>
// 所有存储文件复制三份
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
</configuration>
配置好环境后可以在集群内执行WordCount例程。map-reduce编程通常自定义Map和Reduce类,并实现map与reduce方法,实现自定义逻辑。
来源与引用
- Source: HIT-软件架构与中间件lab2
- Reference
- 菜鸟教程
- lab2-Manual