目录
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简介
HDFS
Some concepts
- 命名节点 (NameNode) 是用于指挥其它节点存储的节点。任何一个"文件系统"(File System, FS) 都需要具备根据文件路径映射到文件的功能,命名节点就是用于储存这些映射信息并提供映射服务的计算机,在整个 HDFS 系统中扮演"管理员"的角色,因此一个 HDFS 集群中只有一个命名节点。
- 数据节点 (DataNode) 使用来储存数据块的节点。
- 副命名节点 (Secondary NameNode) 别名"次命名节点",是命名节点的"秘书"。这个形容很贴切,因为它并不能代替命名节点的工作,无论命名节点是否有能力继续工作。它主要负责分摊命名节点的压力、备份命名节点的状态并执行一些管理工作,如果命名节点要求它这样做的话。如果命名节点坏掉了,它也可以提供备份数据以恢复命名节点。副命名节点可以有多个。
MapReduce
映射后规约,映射完成一个子任务,规约是对子任务的合并,有点像归并排序的感觉。
主要配置文件
集群搭建
实验中构建了类似下图的一个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