曾经的学习笔记

 

1.Hadoop简介:

a) 分布式存储系统HDFS

  1. 分布式存储系统
  2. 提供了高可靠性、高扩展性和高吞吐率的数据存储服务

b) 分布式计算框架MapReduce

  1. 分布式计算框架
  2. 具有易用编程、高容错性和高扩展性等优点

2.HDFS优点:

a) 高容错性

b) 适合批处理

c) 适合大数据处理

d) 可构建在廉价机器上

3.HDFS的缺点:

a) 低延迟数据访问

b) 小文件存取

c) 并发写入、文件随机修改

4.HDFS架构:

a) NameNodeNN元数据) 保存着 HDFS 的名字空间

  1. 接受客户端的读写服务
  2. 保存metadata信息包括
    1. 文件owershippermissions
    2. 文件包含那些快
    3. Block保存在那个datanode
  3. NameNodemetadata信息在启动后加载到内存
    1. Metadata存储到磁盘文件名为”fsImage”
    2. Block位置信息不会保存到fsImage
    3. Edits记录对metadata的操作日志

b) SecondaryNameNode

  1. 不是NN的备份(但可以做备份),主要工作是帮助NN合并editslog,减少NN启动时间
  2. SNN执行合并时机

c) DataNode(存放数据)

5.HDFS文件权限

a) Linux文件权限类似,rwx,权限x对于文件忽略,对文件夹表示允许访问

b) HDFS用户认证:

  1. Simple:只认证用户,不验证密码
  2. KerBeros:认证用户名跟密码:
    1. 数据安全,但是速度比较慢
    2. 每添加一台机器,需要重置用户密码,不利于维护

6.安全模式

7.安装Hadoop

a) Windows下解压hadoop-2.5.2.tar.gz

b) 查看官方文档:\hadoop-2.5.2\share\doc\hadoop\index.html

c) 按官方文档搭建伪分布式:Single Node Setup-->Pseudo-Distributed Operation

d) 安装所需要环境yum install -y ssh rsync

e) hadoop-2.5.2.tar.gz上传到/usr/local/temp/

f) 解压并移动目录mv -r hadoop-2.5.2 /usr/local/hadoop

g) 修改配置环境 vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh

 

h) /usr/local/hadoop下测试命令:bin/hadoop

i) 搭建伪分布式操作;修改文件内容:

  1. vim/usr/local/hadoop/etc/hadoop/core-site.xml

<configuration>

    <property>

        <name> fs.defaultFS </ name>

        <value> hdfs:// localhost:9000 </ value>

    </ property>

</ configuration>

  1. vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml

<configuration>

    <property>

        <name> dfs.replication </ name>

        <value> 1 </ value>

    </ property>

</ configuration>

j) 格式化文件系统:bin/hdfs namenode -format

k) 启动NameNodedatanode守护程序:sbin/start-dfs.sh

8.HDFS安装:

a) 上传tar包,解压并移动到/usr/local/hadoop

b) 配置用户环境变量:vim ~/.bash_profile,配置javaHadoop的目录,重新加载配置

 

c) 进入Hadoop文件夹下修改Hadoop环境配置:vim etc/hadoop/hadoop-env.sh

 

d) 修改核心配置:vim etc/hadoop/core-site.xml

 

e) 修改hdfs配置文件:vim etc/hadoop/hdfs-site.xml

 

f) 配置Hadoop数据存储节点:vim etc/hadoop/sales

 

g) 设置免密登录:ssh

  1. 生成公钥:ssh-keygen
  2. ~/.ssh目录下拷贝公钥到其他节点:ssh-copy-id -i id_rsa.pub root@node5

h) 拷贝hosts文件到其他所有节点:scp /etc/hosts root@node2:/etc/

i) node2节点中监控/etc/hoststail -f /etc/hosts

j) 拷贝~/.bash_profile文件到其他所有节点:

scp ~/.bash_profile root@node2:~/.bash_profile

k) 拷贝hadoop文件夹拷贝到其他节点中:

scp -r /usr/local/hadoop root@node2:/usr/local

l) 格式化HDFS: hdfs namenode -format(注意符号)必须在主节点上

m) 在主节点上启动 start-dfs.sh

 

测试:192.168.189.3:50070浏览器连接

编程:192.168.189.3:9000

如果启动有问题,看日志文件tail -10 /usr/local/hadoop/logs/

9.操作hdfs文件系统

a) hdfs dfs put 上传

b) hadoop-deamon.sh restart datanode重启单个节点

c) stop-dfs.sh

10.导入eclipseHadoop插件

11.Java控制hdfs

a) 创建项目

b) 导入jar