1. Hadoop是适用于大数据的分布式存储与计算平台。
2. Hadoop的两大核心组成:
a) HDFS:分布式文件系统
b) MapReduce:并行计算框架
3. HDFS:是一个主从机构。Namenode主,datanodes从。
4. HDFS的两大核心:namenode和datanode。
a) Namenode是整个文件系统的管理节点,维护整个系统的文件目录,文件、目录的元数据和每个文件对应的数据块列表,负责接收用户的请求。
b) Datanode负责存储数据。
5. Hadoop的特点:
a) 扩容能力:能可靠的存储和处理千兆字节数据。
b) 成本低,可通过普通机器组成服务器群来分发以及处理数据。
c) 高效率:通过分发数据,可以在数据所在的节点上并行处理。
d) 可靠性:能自动维护数据的多份副本。
6. SSH(secure shell):执行后启动hadoop就不需要输入密码(免密码登录):
a) Cd ~后执行ssh-keygen -t rsa或ssh -keygen -t dsa -P ''-f ~/.ssh/id_dsa,然后回车回车再回车。
b) 执行命令cp id_rsa.pub authorized_keys或者cat~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys就行了。
c) 验证ssh localhost。
7. SSH免密码登录对hadoop的好处是什么:免密码登录对于hadoop最大的好处就是,一台namenode服务器可以启动其他datanode服务器,无需再次花费时间去启动其他服务器。
8. 免密码登录的原理:在nadanode服务器上生成秘钥,再将秘钥远程复制到其他服务器上。
9. 安装hadoop之前首先需要先安装jdk。
10. Hadoop安装步骤:
a) 设置ip。
b) 绑定主机名和ip地址。
c) 关闭防火墙。
d) Ssh(secure shell):安全shell
e) 安装jdk
f) 安装hadoop
11. Hadoop的伪部署步骤:
a) 修改hadoop的conf目录下的四个配置文件:
i. Hadoop-env.sh:打开文件第9行修改jkd的位置。
ii. Core-site.xml:修改内容如下:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
<description>改成自己的主机名:比localhost</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
iii. Hdfs-site.xml:修改如下:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>改成自己的主机名:比localhost</description>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
iv. Mapred-site.xml:修改如下:
<configuration>
<property>
<name>mapred.jod.tracker</name>
<value>localhost:9001</value>
<description>改成自己的主机名:比localhost</description>
</property>
</configuration>
b) 执行命令:hadoop namenode -format对hadoop进行格式化。如果有/usr/local/hadoop/tmp/dfs/name has been successfully formatted.代表格式化成功。
c) 执行命令start-all.sh进行启动hadoop。
d) 验证:执行命令jps,可以发现5个java进程。Jobtracker、datanode、namenode、jps、SecondaryNameNode或者使用http://localhost:50070和http://localhost:50070进行浏览器(linux浏览器)验证。
12. 如果多次格式化hadoop也是错误的,解决的方法是:删除/usr/local/hadoop/tmp文件夹,再次格式化。
13. 如何解决hadoop启动时报出的一个警告。
14. 分布式文件管理系统有很多,hdfs只是其中的一种,而且适用于一次写多次读查询的情况,也就是说,一次写完就存储,如果想再次修改或者继续写入是不行的,只能删除重新写入,而且是不适用于并行写入的。
15. Hdfs相当于寄生在操作系统上的另一个操作系统(文件管理系统),那么他在系统中的操作指令跟linux差不多,但是需要在前面加上hadoop fs xxx,例如需要查询文件管理系统的目录结构,hadoop fs -ls /就行,如果需要递归查看目录使用lsr指令。
16. 创建文件夹的指令hadoop fs –mkdir/文件夹名称。
17. 查看某个文件夹下面的内容:hadoopfs –ls /dir。
18. 如果要上传某个文件到hdfs文件管控系统上,指令如下:hadoop fs –put /需要上传文件的地址 /目标地址。(从下面开始省略hadoop fs 直接写后缀就行)。
19. –mkdir 文件夹名称,创建一个文件夹。
20. 如果重复添加同一个文件到同一个文件夹就会报错:put: Target /ceshi already exists,是不会默认覆盖操作的。
21. 如果上传文件的目的文件夹不存在,则默认上传的文件的名称就是不存在的文件夹名称。相当于把要上传的文件内容写入到新的文件中去。
22. 下载文件指令:–get 文件地址 目的地址,如果需要下载到的目的地址正好是linux的当前目录下面的时候可以用.表示。
23. 查看文件的指令:-text 文件地址。
24. 删除文件指令:-rm 文件地址。删除文件夹-rmr 文件夹地址。
25. 直接输入hadoop指令,可以查看hadoop的所有二级指令。二级指令下面还有三级指令,只需要在hadoop后面写上二级指令。
26. Hadoop fs –help 指令名称:可以解释当前指令的用法。
27. Hadoop fs –指令 /:相当于25. Hadoop fs –指令 hdfs://localhost:9000/:之前的都是简化版
28. 但是将来开发的过程中会从特定的服务器去文件,这个时候是绝对不能省略的,目前咱们的服务器是本地,所以是可以省略的。
29. 所以core-site.xml中fs.default.name设置的value就是这个默认的服务器和端口。
30. Namenode的元数据信息包括:
a) 文件owership和permission
b) 文件包括哪些块
c) Block保存在哪个datenode上(当服务器启动的时候自动上报给namenode)
31. NameNode体系结构:namenode有两个重要的文件:fsimage、edits
a) Fsimage:主要用于存储所有文件的元数据信息,当服务器启动时,fsimage的元数据信息会被从磁盘中读到内存中,但是不会加载block位置信息,因为会有block自动上报。
b) Edits:主要记录了元数据信息的操作日志。比如:需要新增/删除一个文件,这个时候不会直接去把fsimage中新建/删除一个元数据信息,而是要当新增/删除完全之后,过一段时间需要由secondarynamenode去合并edits和fsimage中元数据信息,类似于关系型数据库中的事务。
32. SecondaryNameNode的作用:将edits与fsimage进行合并,并复制到本地和内存中,同时将edits进行清空。
33. SecondaryNameNode合并时机,有两种机制:
a) 通过时间进行合并,默认3600秒合并一次(可在配置文件中配置)
b) 通过edits的大小进行合并,默认当edits的大小达到64M是进行整合。
34. SecondaryNameNode的合并机制:当edits与fsimage合并时,将edits、fsimage复制到本地,同时清空edits,合并完成后讲fsimage复制一份,然后存放本地后再给namenode发送一份,替换原先的fsimage。所以SecondaryNameNode尽量不要跟namenode在同一个服务器上,一旦namenode挂机后可以通过SecondaryNameNode恢复99%的数据信息。
35. DataNode:存储、启动上报信息、发送心跳数据3s一次(将本地的fsimage文件上传到内存中去,实时更新元数据信息),如果十分钟之内不上namedate默认datanode的服务器down,然后将其他服务器的block副本复制到其他服务器。
36. Block的副本放置策略:
a) 第一个副本:存放在cpu不忙的服务器上。
b) 第二个副本:存放在不同的机架上的服务器,防止同一个机架上同一个插座。(配置文件中会配置机架的编号)
c) 第三个副本:与第二个副本同一个机架就行了。
d) 其他更多的副本就随意放置了。
37. Block大小和副本通过client上传时,文件上传成功后副本数可以改变,但是block size不可变更。
38. HDFS的读取文件的流程:
a) Client请求通过FileSystem的open方法请求namenode,namenode将相关的元数据信息返回给client。
b) Client获取元数据信息,通过inputstream去不同的datanode读取block,将block整合成最终的文件。
39. HDFS的写文件的流程:
a) Client请求通过FileSystem的create方法请求nodename,namenode将该文件的元数据信息返回给client。这里的元数据是namenode计算出来的,比如:这个文件切几片、放在哪几个datanode上等等。
b) Client获取到元数据信息,通过outputstream方法将block写进不同的datanode中去。
40. HDFS的安全模式指的是:hdfs刚启动时需要等待一段时间,这段时间就叫安全模式时间。
41. HDFS的安全模式时间做的工作:将fsimage加载到内存,datanode上报心跳数据,初始化edits等。
42. Hadoop的工作目录是由hadoop.tmp.dir的value决定的。
43. Hdfs-site的配置文件中dfs.replication配置的是datanode的副本数。默认为3。
44. Slave配置文件:在conf文件夹下面的slave文件配置datanode的ip地址或者服务器名称。
45. Masters配置文件:在conf文件夹下面的mastres文件配置SecondaryNameNode的服务器ip地址或者服务器名称。