Hadoop初探--快速入门

古时候,人们用牛来拉重物,当一头牛拉不动一根圆木得时候,他们不曾想过培育个头更大的牛。同样,我们也不需要尝试更大的计算机,而是应该开发更多的计算系统。--格雷斯·霍珀

一、hadoop简介

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。Hadoop的框架最核心的设计就是:HDFS和MapReduce。
其中HDFS就是一个分鱼展的大硬盘:

  • 分:数据分块存储
  • 鱼:数据冗余
  • 展:动态扩展

二、Hadoop的优势

  • 方便:Hadoop可以运行在一般商业机器构成的大型集群上
  • 高可靠性:Hadoop按位存储和处理数据的能力值得信赖
  • 高扩展性:Hadoop通过增加集群节点,可以线性地扩展以处理更大的数据集
  • 高效性:Hadoop能够在节点间动态地移动数据,并保证各个节点的动态平衡
  • 高容错性:hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配

三、Hadoop的核心系统

Hadoop的核心系统

1、Hadoop Common
Common 为Hadoop的其他项目提供了一些常用工具,主要包括系统配置工具Configuration、远程过程调用RPC、序列化机制和Hadoop 抽象文件系统FileSystem等。
2、Avro
Avro,是一个数据序列化系统,可以将数据结构或者对象转换何成便于存储和传输的格式。
3、Zookeeper
Zookeeper作为一个分布式的服务框架,解决了分布式计算中的一致性问题,可用于处理分布式应用中经常遇到的数据管理问题:统一命名服务、状态同步服务、集群管理、分布式应用配置项管理
4、HDFS
HDFS(Hadoop Distributed File System),Hadoop分布式文件系统
5、MapReduce
MapReduce是一种计算模型,用以进行大数据量的计算。MapReduce 将应用划分为Map和Reduce两个步骤,其中Map对数据集上的独立元素进行指定的操作,生成键-值对形势的中间结果;Reduce则对中间结果中相同“键‘的所有”值“进行规约,以得到最终结果。
6、HBase
HBase是一个针对数据化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。它采用了增强的稀疏排序映射表(Key/Vlaue)
7、Pig
Pig运行在hadoop上,是对大型数据集进行分析和评估的平台。
8、Mahout
Mahout的主要目标是创建一些可扩展的机器学习领域经典算法的实现。

四、hadoop分布式环境搭建

Hadoop集群架构

1、虚拟机中安装一台master服务器

(1) 修改主机名

[root@localhost ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master

(2) 配置网卡IP

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:A8:49:61
TYPE=Ethernet
UUID=8e0bff9b-d7b2-4429-8408-f2f122e323bf
ONBOOT=yes  ## 修改为yes
NM_CONTROLLED=yes
BOOTPROTO=static  ## 修改为static
IPADDR=192.168.137.100  ##本机IP
GATEWAY=192.168.137.1  ## 网关信息
NETMASK=255.255.255.0  ## 广播
DNS1=1.1.1.1   ## 配置DNS

(3) 创建数据目录

[root@localhost ~]# mkdir -p /var/data/hadoop

(4) 配置hosts,允许集群间通过主机名访问

[root@localhost ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.137.100 master
192.168.137.101 slave1
192.168.137.102 slave2
192.168.137.103 slave3

(5) 关闭防火墙

service iptables stop
chkconfig iptables off

2、配置Java环境

1)下载Java,jdk-8u171-linux-x64.rpm
2)利用指令 rpm -i jdk-8u171-linux-x64.rpm,安装Java环境,默认的路径为/usr/java/jdk1.8.0_171
3)配置java环境变量,在/etc/profile下配置如下信息:

JAVA_HOME=/usr/java/jdk1.8.0_171
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH

退出vim后,敲入命令source /etc/profile,继续输入 java -version,查看Java环境是否配置成功:

[root@localhost ~]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

3、安装hadoop

1)软件安装,下载相应的版本,这里以hadoop-2.7.6.tar.gz为例;
2)解压Hadoop文件,tar -xzvf hadoop-2.7.6.tar.gz -C /usr/local/
3)配置hadoop运行环境,hadoop-env.sh:

[root@localhost ~]# cd /usr/local/hadoop/etc/hadoop/
[root@localhost hadoop]# vim hadoop-env.sh

修改JAVA_HOME的变量值:
# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_171

4)配置hadoop核心文件,core-site.xml,在<configuration></configuration>配置相关属性:

[root@localhost hadoop]# vim core-site.xml
# 配置namenode
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
</property>
#修改hdfs默认文件路径
<property>
        <name>hadoop.tmp.dir</name>
        <value>/var/data/hadoop</value>
</property>

5)配置Hadoop的hdfs属性,hdfs-site.xml

[root@localhost hadoop]# vim hdfs-site.xml
<!--指定hdfs保存数据的副本数量-->
<property>
        <name>dfs.replication</name>
        <value>3</value>
</property>

6) 配置Hadoop的yarn属性:yarn-site.xml

[root@localhost hadoop]# vim yarn-site.xml
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>master</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>

7)配置hadoop的MapReduce属性, mapred-site.xml

[root@localhost hadoop]# cp mapred-site.xml.template mapred-site.xml
[root@localhost hadoop]# vim mapred-site.xml
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

8)配置datanode节点

[root@localhost hadoop]# vim slaves
slave1
slave2
slave3

注意:如在此文件中配置了localhost,则会在master中也创建一个datanode

9)配置环境变量

[root@master hadoop]# vim /etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_171
HADOOP_INSTALL=/usr/local/hadoop
PATH=$JAVA_HOME/bin:$HADOOP_INSTALL/bin:$HADOOP_INSTALL/sbin:$PATH
export JAVA_HOME HADOOP_INSTALL PATH

3、克隆master机器三份,分别是slave1,slave2,slave3

1) 修改对应的IP地址和对应的主机名

[root@localhost ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=slave1

2)clone后的机器无法使用网卡eth0,解决办法:
首先:打开/etc/udev/rules.d/70-persistent-net.rules

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:a8:49:61",ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x8086:0x100f (e1000)
## 注释这一行
#SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:71:ec:e2", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1" 

将这一行注释掉,并记录下00:0c:29:71:ec:e2

3) 配置网卡信息

DEVICE=eth1 ## 将原有的eth0,修改成eth1
HWADDR=00:0C:29:71:ec:e2 ## 修改为上一步中记录的号串
TYPE=Ethernet
UUID=8e0bff9b-d7b2-4429-8408-f2f122e323bf
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.137.101 ## 修改IP地址
GATEWAY=192.168.137.2
NETMASK=255.255.255.0
DNS1=1.1.1.1

4、免密登陆

Hadoop 启动 / 停止脚本需要通过 SSH 发送命令启动相关守护进程,为了避免每次启动 / 停止 Hadoop 都要输入密码进行验证,需设置免密码登录。切记:重启一下三台slave机器

1)在master服务器端生成ssh key: ssh-keygen -t rsa

[root@master .ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):   ## 回车
Enter passphrase (empty for no passphrase):  ## 回车
Enter same passphrase again:  ## 回车
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
fd:d8:c4:6c:51:8a:77:35:12:e2:00:54:34:02:09:e3 root@master
The key's randomart image is:
+--[ RSA 2048]----+
|   o..+++= . oo..|
|  . ..  . +..o...|
|   E      ..+ .  |
|         . + o   |
|        S . =    |
|           *     |
|          . o    |
|                 |
|                 |
+-----------------+

2)将生成的公钥复制到三台服务器上以及master上:

[root@master .ssh]# ssh-copy-id slave1

5、master机器上namenode格式化

1)执行命令:hadoop namenode -format
2)验证是否格式化成功:

[root@master ~]# cd /var/data/hadoop/
[root@master hadoop]# ll
total 4
drwxr-xr-x. 3 root root 4096 May  6 20:43 dfs

6、启动Hadoop集群

1)执行启动命令,包括hdfs和yarn

[root@master ~]# start-all.sh 
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
Starting namenodes on [master]
master: starting namenode, logging to /usr/local/hadoop-2.7.6/logs/hadoop-root-namenode-master.out
slave2: starting datanode, logging to /usr/local/hadoop-2.7.6/logs/hadoop-root-datanode-slave2.out
slave3: starting datanode, logging to /usr/local/hadoop-2.7.6/logs/hadoop-root-datanode-slave3.out
slave1: starting datanode, logging to /usr/local/hadoop-2.7.6/logs/hadoop-root-datanode-slave1.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop-2.7.6/logs/hadoop-root-secondarynamenode-master.out
starting yarn daemons
starting resourcemanager, logging to /usr/local/hadoop-2.7.6/logs/yarn-root-resourcemanager-master.out
slave2: starting nodemanager, logging to /usr/local/hadoop-2.7.6/logs/yarn-root-nodemanager-slave2.out
slave3: starting nodemanager, logging to /usr/local/hadoop-2.7.6/logs/yarn-root-nodemanager-slave3.out
slave1: starting nodemanager, logging to /usr/local/hadoop-2.7.6/logs/yarn-root-nodemanager-slave1.out

2)分别在集群中执行jps指令,查看节点是否启动成功

[root@master ~]# jps
4197 Jps
3783 SecondaryNameNode
3592 NameNode
3934 ResourceManager

[root@slave1 ~]# jps
2033 DataNode
2124 NodeManager
2223 Jps

3)访问Hadoop提供的网页管理

192.168.137.100:50070
192.168.137.100:8088

交流群:


程序员交流基地
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352

推荐阅读更多精彩内容

  • 终极算法 关注微信号每天收听我们的消息终极算法为您推送精品阅读 前言 Hadoop 在大数据技术体系中的地位至关...
    Yespon阅读 129,795评论 12 168
  • 一、系统参数配置优化 1、系统内核参数优化配置 修改文件/etc/sysctl.conf,添加如下配置,然后执行s...
    张伟科阅读 3,744评论 0 14
  • 之前的有点忘记了,这里在云笔记拿出来再玩玩.看不懂的可以留言 大家可以尝试下Ambari来配置Hadoop的相关环...
    HT_Jonson阅读 2,949评论 0 50
  • 偶像和粉丝之间到底是一种什么关系呢?相互扶持?相爱相杀?大部分人常常忽略一点,他们因为彼此而成为更好的自己...
    泡芙与火锅阅读 411评论 0 0
  • 平生觉得,吃饭是最不能忍受孤独的一件事情。 首次意识到这个问题是在大学时期。当我害怕在陌生的环境里的不安感觉时,第...
    少女绿妖阅读 6,486评论 3 5