您的位置:首页 > 运维架构

Hadoop学习笔记(一):初识Hadoop与配置

2017-01-29 00:00 204 查看

一、Hadoop是什么?

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。

用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。

Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

二、Hadoop有什么优点?

高可靠性:Hadoop按位存储和处理数据的能力值得人们信赖。

高扩展性:Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。

高效性:Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。

高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

低成本:与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。

三、Hadoop适用于那些项目?

随着 Hadoop 应用的不断拓展,使很多人陷入了对它的盲目崇拜中,认为它能解决一切问题。虽然Hadoop是一个伟大的分布式大型数据计算的框架,但Hadoop不是万能的。比如在下面这几种场景就不适合使用Hadoop:

1、低延迟的数据访问

Hadoop并不适用于需要实时查询和低延迟的数据访问。数据库通过索引记录可以降低延迟和快速响应,这一点单纯的用Hadoop是没有办法代替的。但是如果你真的想要取代一个实时数据库,可以尝试一下HBase来实现数据库实时读写。

2、结构化数据

Hadoop不适用于结构化数据,却非常适用于半结构化和非结构化数据。Hadoop和RDBMS不同,一般采用分布式存储,因此在查询处理的时候将会面临延迟问题。

3、数据量并不大的时候

Hadoop一般适用于多大的数据量呢?答案是:TB 或者PB。当你的数据只有几十GB时,使用Hadoop是没有任何好处的。按照企业的需求有选择性的的使用Hadoop,不要盲目追随潮流。Hadoop很强大。但企业在使用Hadoop或者大数据之前,首先要明确自己的目标,再确定是否选对了工具。

4、大量的小文件

小文件指的是那些size比HDFS的block size(默认64M)小得多的文件。如果在HDFS中存储大量的小文件,每一个个文件对应一个block,那么就将要消耗namenode大量的内存来保存这些block的信息。如果小文件规模再大一些,那么将会超出现阶段计算机硬件所能满足的极限。

5、太多的写入和文件更新

HDFS是采用的一些多读方式。当有太多文件更新需求,Hadoop没有办法支持。

6、MapReduce可能不是最好的选择

MapReduce是一个简单的并行编程模型。是大数据并行计算的利器,但很多的计算任务、工作及算法从本质上来说就是不适合使用MapReduce框架的

四、准备Linux环境

这里选用centos7。

五、Hadoop下载

官网下载,稳定版即可。

六、Hadoop的准备工作

1、设置静态ip地址:

1、$ ip addr   如果无法获取ip时记录下网卡名称。

2、$ cd /etc/sysconfig/network-scripts/ 回车确定,ls查看文件

3、$ vim ifcfg-网卡名称  回车确定

4、将最后一项“ONBOOT=no”改为“ONBOOT=yes” (a键进入编辑模式,完成后“ESC”键退出编辑模式,输入wq保存退出)

5、$ service network restart   重启服务  也可输入  $ systemctl restart netwrok

6、$ ip addr 查看是否可以自动获取IP地址。

7、$ vim /etc/sysconfig/network-scripts/ifcfg-网卡名称
修改如下:
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.0.20
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
完成后保存退出。

8、$ service network restart 启动服务


2、修改主机名

1、$ Vim  /etc/sysconfig/network
修改如下
NETWORKING=yes
HOSTNAME=aaa01(主机名)
保存退出

2、$ vim  /etc/hosts
修改主机名和ip的映设关系,修改如下:
192.168.0.103  aaa01
保存退出


3、关闭防火墙

$ sudo systemctl stop firewalld.servicechkconfig iptables off   关闭防火墙
$ sudo systemctl disable firewalld.service  关闭开机启动


七、Hadoop配置

(懒得一个个写代码块了。。。。见谅。)

1、core-site.xml

<configuration>

指定HDFS老大(nameNode地址)

<property>

<name>fs.defaultFS</name>

<value>hdfs://aaa01:9000</value>(或者IP地址:端口)

</property>

指定Hadoop运行时产生文件的存放地址

<property>

<name>hadoop.tmp.dir</name>

<value>/opt/hadoop-2.7.3/tmp </value>

</property>

</configuration>

2、hdfs-site.xml

<configuration>

配置分布式存放数量

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</configuration>

3、mapred-site.xml(mv mapred-site.xml.template mapred-site.xml 修改文件)

<configuration>

告诉hadoop以后RM运行在yarn上

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

4、yarn-site.Xml

<configuration>

Nodemanager获取数据的方式是shuffle的方式

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

指定yarn的老大(resourcemanager)的地址

<name>yarn.resourcemanager.hostname</name>

<value>localhost</value>

</property>

</configuration>

5、Hadoop-env.sh

添加jiava_home

八 、运行Hadoop(伪分布式)

$ ./start-all-sh   启动全部服务 脚本在sbin目录下


九、SSH免登陆

这时你会发现需要输入好几次ssh的密码,其实是可以实现免密登录的只需要几步操作。

1、进入 ~ 目录

2、$ ssh-keygen -t rsa 设置钥匙 RSA 给定加密算法 运行后生成两个文件  公钥跟私钥。

3、$ cp id_rsa.pub authorized_keys  或者 ssh-copy-id fengyang01   copy公钥  一直回车

4、$ ssh-copy-id  192.168.0.106   copy公钥给192.168.0.106  一直回车 实现免登陆


这时再次启动就不在需要输入ssh密码了。另外这时本人第一次写技术博客。。。。如果有不对的地方欢迎指出,毕竟写博客也就为了学习交流,如有不懂的也可留言,看到的话会回的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Hadoop Hadoop配置