Hadoop简介

我们之前已经解释过了分布式存储,分布式存储有很多的解决方案,其中有个开源程序叫做HDFS,HDFS+MAPREDUCE=hadoop。

hadoop不算是单存的分布式存储,我们之前提到的Mogilefs和Fastdfs都是分布式存储。hadoop属于分布式计算,MAPREDUCE是一个编程的框架,使得程序可以并行计算。

HDFS适用于存储单个大文件,在存储中内置块大小为64M,会将大文件分片存储,同时也支持存储海量的文件。

MAPREDUCE就是基于上面存储的文件进行处理,分析。


上面提到了hadoop是由mapreduce+hdfs组成,因此他也是两个集群,hdfs分成了一个主节点和N个从节点,从节点主要用于存储数据,主节点存储从节点的元数据信息,有点类似于之前介绍的fastdfs由从节点向主节点汇报自己的状态,存储的文件等等。mapreduce(hadoop2.0以后)也分为了两块,一块称为RM(resource manager)一般运行与单个主机上,一块称为NM(node manager)运行在每个存储节点之上,RM负责接收用户的任务,并将任务发往NM之上,在NM之上又会生成一个AM(application manager),再由AM管理具体任务的执行。


接下来就来简单配置一个伪分布式的hadoop(因为上述所有进程都运行在一个主机上,因此命名为伪分布式)

下载官网的tar包。

hadoop运行与java虚拟机之上,所以先得去配置java环境

[root@localhost ~]# yum -y install java-1.8.0-openjdk-devel    java-1.8.0-openjdk   

[root@localhost ~]# vi /etc/profile.d/java.sh 
[root@localhost ~]# cat /etc/profile.d/java.sh
export JAVA_HOME=/usr                        #此处指明java目录即可,hadoop在运行时会自动找java目录下bin/java
export HADOOP_PREFIX=/usr/local/hadoop-2.7.1 

export PATH=$PATH:${HADOOP_PREFIX}/bin:${HADOOP_PREFIX}/sbin
export HADOOP_YARN_HOME=${HADOOP_PREFIX}
export HADOOP_MAPPERD_HOME=${HADOOP_PREFIX}
export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
export HADOOP_HDFS_HOME=${HADOOP_PREFIX}

配置java以及hadoop配置环境

编辑hadoop目录中etc/hadoop/core-site.xml文件,添加一下内容。

    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:8020</value>
       <final>true</final>
    </property>

hadoop的配置文件格式name相当于一个指令,value就是指令值。

同目录下yarn.site.xml添加此段

    <property>
        <name>yarn.resourcemanager.address</name>
        <value>localhost:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>localhost:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>localhost:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
       <value>localhost:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>192.168.20.105:8088</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.auxservices.mapreduce_shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.class</name>
        <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
    </property>

同目录下hdfs.site.xml添加此段

    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///data/hdfs/nn</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///data/hdfs/dn</value>
    </property>
    <property>
        <name>fs.checkpoint.dir</name>
        <value>file:///data/hdfs/snn</value>
    </property>
    <property>
        <name>fs.checkpoint.edits.dir</name>
        <value>file:///data/hdfs/snn</value>
    </property>

[root@localhost hadoop-2.7.1]# cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
[root@localhost hadoop-2.7.1]# vi etc/hadoop/mapred-site.xml

复制此模板文件,并编辑此文件,添加如下内容

   <property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
   </property>

所有配置文件就准备好了,每个配置文件中都有很多参数,具体参数详情查看以下官方文档。(网上也有很多别人翻译好的)

http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-common/core-default.xml

http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

http://hadoop.apache.org/docs/r2.7.3/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

http://hadoop.apache.org/docs/r2.7.3/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

创建配置文件中指定的目录

[root@localhost sbin]# mkdir /data/hdfs/{nn,sn,dn} -pv

[root@localhost hadoop-2.7.1]# mkdir logs                    #创建日志目录,日志会保存到这里

[root@localhost hadoop-2.7.1]# hdfs namenode -format            #格式化NN

Hadoop简介

看到箭头那行证明格式化成功,接着启动所有服务

[root@localhost hadoop-2.7.1]# hadoop-daemons.sh  start datanode

[root@localhost hadoop-2.7.1]# hadoop-daemons.sh  start secondarynode

[root@localhost hadoop-2.7.1]# hadoop-daemons.sh  start name

[root@localhost hadoop-2.7.1]# yarn-daemon.sh start resourcemanager
[root@localhost hadoop-2.7.1]# yarn-daemon.sh start nodemanager

启动服务时回要求输入密码,因为默认是通过ssh协议链接到个节点的主机上启动,另外启动secondary时会报错提示找不到secondary节点,这里我们不用管它

[root@localhost hadoop-2.7.1]# vi etc/hadoop/hadoop-env.sh              #启动服务时提示找不到JAVAHOME ,我核实了多遍,发现没有问题,结果发现这个文件里面定义了一个JAVA_HOME,把他改一下即可

接着可以看到起来了一大堆端口,其中关注最多的应该是

50070:监控存储节点的web接口

8088:监控运行任务的web接口

其他80的基本是程序员写程序调用的接口

其他50的基本是hdfs通讯所用到的接口

Hadoop简介

存储的状态界面

Hadoop简介

运行任务的状态界面

实际应用中出于安全考虑应该以普通用户的身份启动各服务。

有一点没需求,就当是学习完整理下思路。

原创文章,作者:N24_Ghost,如若转载,请注明出处:http://www.178linux.com/71067

(1)
N24_GhostN24_Ghost
上一篇 2017-03-13 21:01
下一篇 2017-03-13 22:27

相关推荐

  • 全球敏捷运维峰会Gdevops 2017成都站嘉宾主题提前看!

    2017年全球敏捷运维峰会(Gdevops, Global Devops Summit)将于2017年在成都、上海、北京、广州四城全面启动,本次峰会由上海市经济和信息化委员会指导,上海市云计算产业促进中心、DBAplus社群主办,数十家媒体单位共同支持,活动家提供全球敏捷运维峰会在线报名服务。 成都站即将于13日启航,搭车地址:https://www.huo…

    Linux干货 2017-05-11
  • Linux上常用文件管理命令

    1、目录管理类的命令: mkdir, rmdir,tree,cd,pwd,ls mkdir:make directories mkdir [OPTION]… DIRECTORY… -p: 自动按需创建父目录; -v: verbose,显示详细过程; -m MODE:直接给定权限; [root@centos7 ~]# mkdir -pv…

    Linux干货 2016-11-06
  • linux权限管理

    linux文件权限    文件的属性和权限的设置对于linux系统来说是相当重要的,如果对这一块的知识没有一个深入的了解,你的系统就有可能有很大的危险。那么首先我们来看一看文件的属性所对应的都是什么意思吧。 上图第一个字符是d,他代表了文件的类型,d的意思就是目录文件,那么除了目录文件还有什么文件呢?    …

    Linux干货 2016-08-04
  • 第一次写的linux脚本

    刚开始学的时候,都是一些基本的命令,总是无法把它们联系到一块去,现在刚开始接触脚本,顿时感觉压力好大,基础命令如果记不牢,很有可能就挂了,下面我把近几天学习的一些脚本命令及练习拿来分享一下,供大家参考,同时加深我的记忆。 首先是写脚本的格式,我这里用vim编辑器来写的脚本,因为它的色彩非常明艳,易于区分。基本格式如下: #!/bin/bash 第一行一般为调…

    Linux干货 2017-08-05
  • 处理交换文件和分区

    处理交换文件和分区 交换分区是系统RAM的补充   基本设置包括:  1 创建交换分区或者文件  2 使用mkswap写入特殊签名  3 在/etc/fstab文件中添加适当的条目  4 使用swapon -a 激活交换空间 挂载交换分区  启用:swapon swapon [OPTION]……

    Linux干货 2016-09-01
  • bash的基础特性[更新中]

    2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
    3、请使用命令行展开功能来完成以下练习:
    (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
    (2)、创建/tmp/mylinux目录下的:
    mylinux/
    ├── bin
    ├── boot
    │   └── grub
    ├── dev
    ├── etc
    │   ├── rc.d
    │   │   └── init.d
    │   └── sysconfig
    │   └── network-scripts
    ├── lib
    │   └── modules
    ├── lib64
    ├── proc
    ├── sbin
    ├── sys
    ├── tmp
    ├── usr
    │   └── local
    │   ├── bin
    │   └── sbin
    └── var
    ├── lock
    ├── log
    └── run
    5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
    6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
    7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
    8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
    9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
    10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
    11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
    12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。

    2018-03-17

评论列表(1条)

  • 马哥教育
    马哥教育 2017-03-30 13:57

    对hadoop的基础配置描述的非常详细清晰,继续加油。