Hadoop 笔记1 (原理和HDFS分布式搭建)

1. hadoop 是什么 以及解决的问题 (自行百度)

2.基本概念的讲解

  1. NodeName  master 节点(NN)

     主节点 保存了metaData(元数据信息) 包括文件的owener和permission ,文件包换哪些block,block保存在哪个DataNode

     NameNode的metaData信息在启动时会加载 到内存

    ,操作文件的日志信息,edit文件,同时不断合并edit和fsimage 这两个文件就可以记录 HDFS 上所有文件的信息

  2.secondary NameNode (从节点)

    主要工作是帮助naneNode合并editslog,减少NN启动时间,原理如下

              

  3. dataNode 

     实际保存存储的文件信息(Block)

     启动时dataNode线程会向NameNode汇报block信息

     像nameNode 发送心跳  如果namenode 10分钟没有收到则任务 datanode 挂了,并且copy block到其他DataNode

4 hdfs

  文件按大小切分成固定大小的block块  存储到不同的datanode上 最少每个block块 会保存3个副本 防止数据丢失

如下 红色色数据 分别存储待不同的机器上 保证数据不丢失

分布式部署如下(centos 6.6 jdk 1.7 hadoop 2.5.1 )

节点如下,四台机器
          NN     SNN     DN
node1  1
node2            1        1
node3                      1
node4                      1


1. 主机名,防火墙,网络配置
编辑 vi /etc/hosts 文件(保证4台机器可以通信),以下为配置域名
192.168.109.113 node1
192.168.109.114 node2
192.168.109.222 node3
192.168.109.121 node4
关闭防火墙service iptable stop


2 node1访问node2,3,4秘钥(不输入密码)


Node1 ssh-keygen -t rsa 一路回车,node2,node3 node4 同样, 在家目录下执行创建秘钥对的命令,会生成.ssh目录
scp authorized_keys root@node2:/root/.ssh/ 将node1 的秘钥拷复制到 node2,node2,node4 的/root/.ssh下即可实现免登陆
scp authorized_keys root@node3:/root/.ssh/
scp authorized_keys root@node4:/root/.ssh/
ssh node2 就不用再输入密码了
3 时间同步(保证四台机器时间一样,会有心跳检测)
Ntp 安装 yum install ntp
ntpdate s1a.time.edu.cn //北京大学的ntp 地址 用ntpdate选择时间服务即可
实际中报错没有解决 ,最终在xhell中 选择全部会话 执行date –s 12:10:10 时间做了一个同步
4 安装jdk
Rpm –ivh jdk的rpm包,安装后默认在 /usr/java 下
配置jdk环境的变量
Vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_45
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
保存 java –version 查看是否安装成功

5 hadoop 安装和配置
tar –zxvf hadoop xx tar .gz

配置文件位置/usr/local/hadoop-2.5.1/etc/hadoop
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoopHDFS</value>
</property>
</configuration>

配置hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!—下面已经制定snn>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node2:50090</value>
</property>
</configuration>

配置hadoop_env.sh 修改java_home
export JAVA_HOME=/usr/java/jdk1.7.0_45

配合hadoop环境变量
export HADOOP_HOME=/usr/local/hadoop-2.5.1
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

配置master 和slaves
vi /usr/local/hadoop-2.5.1/etc/hadoop/masters 写入node1,master 就是nameNode
vi /usr/local/hadoop-2.5.1/etc/hadoop/slaves 写入node2,node3,node4


统一拷贝配置文件保证每台都一样
scp -r hadoop/ root@node4:/usr/local/hadoop-2.5.1/etc/
scp -r hadoop/ root@node3:/usr/local/hadoop-2.5.1/etc/
scp -r hadoop/ root@node2:/usr/local/hadoop-2.5.1/etc/

6 格式化NN(bin下面)
hdfs namenode –format

7 启动
start-dfs.sh

查看每台的进程jps
NN(node1)

SNN(node2)
DN(node2,node3,node4)
Web 页面 http://192.168.109.113:50070/ nodeName的50070访问

  

原文地址:https://www.cnblogs.com/lilefordream/p/5999838.html