一、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密码了。另外这时本人第一次写技术博客。。。。如果有不对的地方欢迎指出,毕竟写博客也就为了学习交流,如有不懂的也可留言,看到的话会回的。