大数据基础二 —Hadoop的详解与集群的搭建

1,Hadoop是什么?

Hadoop 是 Apache 旗下的一个用 java 语言实现开源软件框架,是一个开发和运行处理大规模数据的软件平台。允许使用简单的编程模型在大量计算机集群上对大型数据集进行分布式处理。

狭义的说,Hadoop指的是Apache这款开源软件,它的核心组件有HDFS,YARN,MAPREDUCE。

广义的说,它是指一个更广泛的概念——Hadoop生态圈。从谷歌的“三大马车”发布之后,Hadoop也在卡大爷的手里从海量数据的存储,到MapReduce的实现,再到后面Hbase的发展。使得Hadoop大生态圈越扩越大。

直到现在它已经包含了

HDFS:分布式文件系统
MAPREDUCE:分布式运算程序开发框架
HIVE:基于 HADOOP 的分布式数据仓库,提供基于 SQL 的查询数据操作
HBASE:基于 HADOOP 的分布式海量数据库
ZOOKEEPER:分布式协调服务基础组件
Mahout:基于 mapreduce/spark/flink 等分布式运算框架的机器学习算法库
Oozie:工作流调度框架
Sqoop:数据导入导出工具(比如用于 mysql 和 HDFS 之间)
Flume:日志数据采集框架
Impala:基于 Hadoop 的实时分析

2,Hadoop能做什么?

不管是国内还是国外,Hadoop 最受青睐的行业是互联网领域,可以说互联网公司是 hadoop 的主要使用力量。

国外来说,Yahoo、Facebook、IBM 等公司都大量使用 hadoop 集群来支撑业务。比如:Yahoo 的 Hadoop 应用在支持广告系统、用户行为分析、支持 Web 搜索等。Facebook 主要使用 Hadoop 存储内部日志与多维数据,并以此作为报告、分析和机器学习的数据源。
国内来说,BAT 领头的互联网公司是当仁不让的 Hadoop 使用者、维护者。比如 Ali 云梯(14 年国内最大 Hadoop 集群)、百度的日志分析平台、推荐引擎系统等。

国内其他非互联网领域也有不少 hadoop 的应用,比如:
金融行业: 个人征信分析
证券行业: 投资模型分析
交通行业: 车辆、路况监控分析
电信行业: 用户上网行为分析
总之:hadoop 并不会跟某种具体的行业或者某个具体的业务挂钩,它只是一种用来做海量数据分析处理的工具。

3,Hadoop有什么特点?

扩容能力(Scalable):Hadoop 是在可用的计算机集群间分配数据并完成计算任务的,这些集群可用方便的扩展到数以千计的节点中。
成本低(Economical):Hadoop 通过普通廉价的机器组成服务器集群来分发以及处理数据,以至于成本很低。
高效率(Efficient):通过并发数据,Hadoop 可以在节点之间动态并行的移动数据,使得速度非常快。
可靠性(Rellable):能自动维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。所以 Hadoop 的按位存储和处理数据的能力值得人们信赖。

4,Hadoop的集群搭建(很详细)

准备工作:

(1)修改主机名与IP映射

vi /etc/hosts

(2)关闭防火墙

service iptables stop//关闭防火墙
chkconfig iptables off//关闭防火墙自启

(3)配置免密登录

ssh-keygen(四个回车)
ssh-copy-id ip/主机名

(4)同步集群时间

yum install ntpdate
ntpdate cn.pool.ntp.org

安装

(1)安装jdk

上传解压改配置

(2)安装Hadoop(已编译)

上传解压

配置Hadoop

(1)hadoop-env.sh

vi hadoop-env.sh
export JAVA_HOME=jdk的路径

(2)core-site.xml

配置指定Hadoop所使用的文件系统,HDFS的主机地址,Hadoop运行时产生文件的存储目录

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://主机名:端口号</value>
           tfs://
           gfs://
           file:///
</property>

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

(3)hdfs-site.xml

用来配置副本数量和secondarynamenode指定的主机与端口号

<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>

<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>主机名:端口号</value>
</property>

(4)mapred-site.xml

指定mr运行的框架,默认是在local,可以指定在yarn

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

(5)yarn-site.xml

指定yarn的主服务器与notemanager的附属服务

<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>主机名</value>
</property>

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

(6)配置slaves文件

配置主从主机名,一行一个

(7)将Hadoop添加到环境变量/etc/profile

vim /etc/proflie
        export JAVA_HOME=/root/apps/jdk1.8.0_65
        export HADOOP_HOME=/root/apps/hadoop-2.7.4
        export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    source /etc/profile

(8)初始化namenode(在集群搭建完毕后执行)

hdfs namenode format (hadoop namenode -format)

(9)启动测试

先启动HDFS

sbin/start-dfs.sh

    再启动YARN
    sbin/start-yarn.sh

单个配置完成后将文件传给其他的服务器,完成集群的搭建。