(2) Hadoop-集群搭建 HDFS入门

1.Hadoop 介绍

概述
  • 用java编写开源框架,允许使用简单的API在大量的 计算机集群上 针对 大型数据集 进行分布式处理
Hadoop 核心组建 (狭义)
  • HDFS (分布式文件系统):针对海量数据的存储
  • YARN (作业调度,集群资源管理框架) : 解决资源任务调度,资源包括内存 CPU 磁盘。。
  • MAPREDUCE(分布式运算编程框架):解决海量数据的计算
Hadoop 生态圈 (广义) 同spring想类似,spring生态圈
  • HDFS:分布式文件系统

  • MAPREDUCE:分布式运算程序开发框架

  • HIVE:基于 HADOOP 的分布式数据仓库,提供基于 SQL 的查询数据操作

  • HBASE:基于 HADOOP 的分布式海量数据库

  • ZOOKEEPER:分布式协调服务基础组件

  • Mahout:基于 mapreduce/spark/flink 等分布式运算框架的机器学习算法库

  • Oozie:工作流调度框架

  • Sqoop:数据导入导出工具(比如用于 mysql 和 HDFS 之间)

  • Flume:日志数据采集框架

  • Impala:基于 Hadoop 的实时分析

2.Hadoop 国内外应用

  • 在大数据的行业 各个领域都会有应用,因此在未来的发展绝对会没有问题 需求量也会越来越大!坚信自己的选择,做人做事一定要明白 不是因为看到才会相信,而是因为相信才要坚持 。

3.Hadoop 特性优点

  • 扩容能力 : 在需要的时候可以扩大集群计算
  • 成本低 : 对于服务器性能要求低
  • 效率高 : 通过并发数据,hadoop节点之间动态并行的移动数据
  • 可靠性 : 能自动维护数据的多份,如果计算任务失败后可以重新部署计算任务

4.Hadoop 集群的搭建

节点之间如何去通信? 如果主节点挂掉怎么版?

  1. 如果主节点挂掉 有个HA,主备关系

    • Hadoop分商业版(CDH) 还有社区版

搭建集群的注意事项

  1. 注意是两套集群 一个套是NameNode-DataNode 另一套是 resourceManage NodeManage
  2. 需要给自己本机也配置免密登陆 1. ssh node1 2. ssh-copy-id node-1
  3. ls -al 显示所有隐藏文件 当输入vi指令需要按下回车键的时候,有个好像是以swap结尾的扩展名删除就可以了,出现这个问题的时候是因为在vi编辑指令的时候没有正常退出。
  4. 启动指令的注意事项 /sbin/, start-all.sh
  5. 出现下面的log错误的话 解决方案:将目录、dfs、name、data清空是重复启动到时key值不一样
Datanode Uuid unassigned) service to node-1/192.168.20.101:9000. Exiting.   

6.第二天起来再次启动集群的时候会出现下面这个异常

org.apache.hadoop.hdfs.server.common.InconsistentFSStateException:

Directory does not exist?但是为什么刚装完时是存在的呢,抱着试试看的态度,再次执行。
hadoop namenode -format
执行之后再启动,namenode启动成功了,说明上面does not exist的目录在format namenode的时候重新建起来了,但是如果每次重启都要format namenode,
也太不靠谱了,不止是麻烦,更大的麻烦是里面的数据不能总被无情的delete掉啊,问题必须解决。
Directory /tmp/hadoop-javoft/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
这 里的目录既然是在tmp下面的,回忆一下,tmp目录下的文件是临时文件会被定期删除的,貌似bug已经露出水面。那就重启计算机试试是不是因为这,
重启 之前检查一下tmp目录下面确定几个format namenode之后应该有的目录都有的,重启之后,发现全部被删掉。
在执行一次 start-dfs.sh,看到tmp目录下面建了一些目录,但是dfs/name目录仍然不存在,在start-dfs.sh时候建了一部分目录和文 件。
而dfs/name需要在hadoop namenode -format时建立。问题清楚了。
解决方案就很简单,这些目录的位置都是根据hadoop.tmp.dir的位置确定的,所以只需要在conf/core-site.xml覆盖hadoop.tmp.dir的默认值即可:
...
<property>
   <name>hadoop.tmp.dir</name>
   <value>/home/javoft/Documents/hadoop/hadoop-${user.name}</value>
   <description>A base for other temporary directories.</description>
</property

具体搭建步骤如下 详细步骤

  • 看我博客的朋友,请安装下面的步骤依次执行,如果在安装过程中出现问题,就去参照搭建集群的注意事项的问题 。

  • 我下面的搭建属性是依次安装hadoop架构层次去搭建 hadoop 根目录下面 /etc/hadoop/ 是需要修改的配置文件

运行环境

1. CentOS 6.7 
2. jdk 1.8 
3. VMWare Pro 12
4. Hadoop 2.7.4 目前是最稳定版本,属于社区版    

安装下面的需求去搭建集群

    node-01 NameNode DataNode ResourceManager
    node-02 DataNode NodeManager SecondaryNameNode
    node-03 DataNode NodeManager

1. 第一步去配置java环境变量,因为在hadoop框架在运行的时候有可能会找不到jdk环境变量,这步不是必须而是为了确保

第一个:hadoop-env.sh

vi hadoop-env.sh
export JAVA_HOME=/root/apps/jdk1.8.0_65

2. 下面配置的是namenode节点所在的服务器,同时也配置HDFS文件系统所在的目录 很关键

第二个:core-site.xml

<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://node-1:9000</value>
</property>

<!-- 指定hadoop运行时产生文件的存储目录,默认/tmp/hadoop-${user.name} -->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hadoop/hadoop-2.7.4/tmp</value>
</property>   

3. 下面是配置HDFS所产生的副本数,副本数默认是三个,以及secondarynamenode所在的服务器

第三个:hdfs-site.xml 

<!-- 指定HDFS副本的数量 -->
<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>

<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>node-2:50090</value>
</property>  

4. 配置YARN集群的一些属性,标注resourceMangeer nodemanage

第四个:yarn-site.xml

<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>node-21</value>
</property>

<!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序默认值:"" -->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>  

5. 配置Mapreduce分布式计算框架,并行移动计算

第五个:mapred-site.xml 

mv mapred-site.xml.template mapred-site.xml
vi mapred-site.xml

<!-- 指定mr运行时框架,这里指定在yarn上,默认是local -->
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>   

6. 配置datanode nodemanage 从节点的IP地址

第六个:slaves文件,里面写上从节点所在的主机名字

vi slaves
node-1
node-2
node-3   

7.进行初始化操作,主要是初始化namenode节点,执行下面的指令后会在/home/hadoop/hadoop-2.7.4/tmp生成目录,这个目录就是dfs分布式文件系统目录,其他所有子节点也都会生成

hdfs namenode -format (hadoop namenode -format)

8.HDFS启动的详细介绍

  • HDFS 启动有两种 1. 节点单独启动 2. 统一启动 (一定要先启动HDFS 在去启动yarn)
9.节点单独启动
    sbin/hadoop-daemon.sh start datanode|nodeManage|namenode|secondaryNode

    需要去不同的节点去搞起 注意启动的时候通过jps 查看启动的节点进程,
10.节点单独启动
    先启动HDFS
    sbin/start-dfs.sh

    再启动YARN
    sbin/start-yarn.sh  

    全部启动 
    start-all.sh  // 上面两部合并   

 查看节点启动情况

    使用jps命令验证  
    27408 NameNode
    28218 Jps
    27643 SecondaryNameNode
    28066 NodeManager
    27803 ResourceManager
    27512 DataNode  

11. 查看是否启动成功

    关闭防护墙去查看 最好用Google浏览器

    http://192.168.20.101:50070 (HDFS管理界面)  //节点的IP是 namenode 端口号50070
    http://192.168.20.101:8088 (MR管理界面)     // 节点的IP是 resourcemanger 端口号8088

    运行上面的内容都能看界面出现代表运行成功  

12. 查看 HDFS文件系统的界面一些内容

这里写图片描述

12. 查看 YARN插件运行状态

这里写图片描述

13.文件的上传到HDFS上面 从HDFS系统上面下载文件
  • 从Linux本地上传到 HDFS文件系统

    1. hadoop fs -mkdir /rui 在hdfs上面创建一个目录
    
    2. hadoop fs -put /linux目录或文件 /rui 从Linux系统中上传目录或文件到 hfds上面的rui目录下面 
    

    这里写图片描述

  • 查看文件HDFS客户显示的内容

    这里写图片描述
    这里写图片描述

Mapreduce jar包的运行并行计算
  1. 任务MR提交给YARN,YARN负责管理资源调度的问题

    在 Hadoop 安装包的 hadoop-2.7.4/share/hadoop/mapreduce 下有官方自带
    的 mapreduce 程序。我们可以使用如下的命令进行运行测试。
    示例程序 jar:
    hadoop-mapreduce-examples-2.7.4.jar
    计算圆周率:
    hadoop jar hadoop-mapreduce-examples-2.7.4.jar pi 20 50
    关于圆周率的估算,感兴趣的可以查询资料 Monte Carlo 方法来计算 Pi 值。
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值