`

Hadoop 学习之二

 
阅读更多
Hadoop 学习系列之二

企业记性选型配置

选型理念:普通的,廉价的,标准的(容易替换的),工业话大规模生产的。
Hadoop 可以自动支持多核CPU,比如选择2个四核CPU,主流主频
16-32G内存,更大的内存可以使Linux将常用的数据缓存在内存,减少IO,提高速度。
存储集群应该使用大量廉价硬盘,例如主流大容量(2T)普通SATA硬盘,出于成本考虑一般无需使用
SCSI,SAS接口类型硬盘或SSD硬盘。
网络非常重要,建议使用前兆和高带宽的交换机,但无需使用infinband这类专用设备
RAID是不需要的,可以考虑使用JBOD.RAID提供的数据的冗余容错,但Hadoop本身就提供了冗余容错的功能,所以没有必要使用RAID。


网络拓扑设计

主流构架方案使用局域网,尽量不要使用低速率的跨数据中心连接。
Hadoop支持机架感知机制。

操作系统的选择

Hadoop基于Java,因此只要能运行JVM的平台,几乎都能跑HADOOP。
32位或者64位平台均可,Hadoop没有区分位数。
操作系统主流选项是Linux,常用的发布版均可,例如CentOS,Rehat等,较新的版本均可。
Windows也可以安装Hadoop,但不建议。
很很多Apache官版之外的Hadoop发布版,例如CDH,Intel,EMC等,有和一体机融合的解决方案。
这些发布版一般比官方版本更容易安装和管理,但部分需要收费。


JDK

Java是Hadoop的原生开发语言,Hadoop本身用Java书写,主要开发语言也是Java。



--配置免密码
1.生成Key文件

[anker@anker ~]$ ssh-keygen -t rsa


[anker@anker ~]$ cd .ssh
[anker@anker .ssh]$ ls
id_rsa  id_rsa.pub  known_hosts


2.在另外一个机器上也做同样的操作

[anker@anker ~]$ ssh-keygen -t rsa


3.将生成的id_rsa.pub文件拷贝到另外一台机器上
scp ./id_rsa.pub anker@192.168.1.109:/home/anker/.ssh/authorized_keys

在目标机器上查看
[anker@anker .ssh]$ ls -l
total 12
-rw-r--r--. 1 anker anker  401 Apr 12 20:27 authorized_keys
-rw-------. 1 anker anker 1671 Apr 12 20:24 id_rsa
-rw-r--r--. 1 anker anker  401 Apr 12 20:24 id_rsa.pub

需要确保权限为rw-r-r,若权限不对,需要通过chmod 644 authorized_keys来进行赋权。

4.继续上面的步骤,双方都用户对方生成的公钥文件.即可以免密码访问。



RSA算法

是一种不对称加密,它有两种秘钥,一种公钥,一种私钥。
公钥可以让全世界都知道,私钥只有持有者拥有,凡是用公钥加密的内容,都可以通过私钥来解开,
凡是私钥加密的内容,通过公钥可以解开。
公钥是推不出私钥,私钥也推不出公钥。

一般的SSH的原理

客户端向服务器端发出连接请求(注意非口令认证)
服务器端向客户端发出自己的公钥
客户端使用服务器端的公钥加密认证密码,然后发给服务器端
如果通讯过程被截获,由于qie听者即使获知公钥和经过公钥加密的内容,但不拥有
私钥依然无法解密(RSA算法).
服务器端接受到密文后,用私钥解密,获知通讯密钥,后建立了通讯。


免密码原理

客户端先为自己创建一对密钥,把公用密钥放在需要访问的服务器上。
如果要连接ssh服务器,客户端软件想服务器发出请求,请求用自己的密钥进行安全验证。
服务器端收到请求后,会随机产生一段随机的密码,这段密码称为质询,然后使用客户端的公钥进行加密,
加密之后发送给客户端。
客户端软件收到质询之后,就可以用你的私人密钥解密再把它发送到服务器。
服务器比较发送来的质问和原先是否一致,若一致就进行授权,完成建立会话的操作。

[root@localhost ~]# chkconfig --list     显示开机可以自动启动的服务
[root@localhost ~]# chkconfig --add *** 添加开机自动启动***服务
[root@localhost ~]# chkconfig --del ***   删除开机自动启动***服务


安装Hadoop


1.下载Hadoop,并解压

http://archive.apache.org/dist/hadoop/core/hadoop-1.1.2/hadoop-1.1.2-bin.tar.gz

tar -xzvf hadoop-1.1.2-bin.tar.gz


2.配置Hadoop

2.1
/conf/hadoop-env.sh(配置运行hadoop的环境变量)

--设置Java Home
export JAVA_HOME=/usr/jdk1.7.0_51

2.2
/conf/core-site.xml(配置Hadoop的核心,比如关于HDFS和MapReduce的I/O的设置)
<configuration>

<property>
<name>fs.default.name</name> --NAMENODE的位置
<value>hdfs://anker.centos1:9000</value>
</property>

<property>
<name>hadoop.tmp.dir</name>--Hadoop的临时路径,否则hadoop会使用系统的的tmp目录存放Hadoop的数据。而此目录在系统重启后会被清空
<value>/home/anker/hadoop-1.1.2/tmp</value>
</property>

<configuration>


2.3
/conf/hdfs-site.xml(配置HDFS的守护进程:namenode, secondary namenode,及datanodes)

<configuration>

<property>
<name>dfs.replication</name>--指定在hdfs的服务器因子
<value>2</value>
</property>

<configuration>

2.4
/conf/mapred-site.xml(配置MAPReduce的守护进程:jobtracker, tasktracker)

<configuration>

<property>
<name>mapred.job.tracker</name>--指定jobtracker的监听地址及端口
<value>anker.centos1:9001</value>
</property>

<configuration>

2.5

/conf/masters(充当master的服务器)
anker.centos1

2.6

/conf/slaves(充当slave的服务器)
anker.centos2
anker.centos3


3.修改host文件,包括master和slave服务器

192.168.1.107 centos1
192.168.1.109 centos2

4.关闭防火墙
service iptables stop

5.复制配置好的Hadoop到slaves节点

scp -r ./hadoop-1.1.2 anker@192.168.1.109:/home/anker
--r代表将所有的子目录文件全部复制过去

6.格式化namenode,观察日志信息是否提示成功

 bin/hadoop/ namenode -format

7.配置本机的免密码设置(包括masters和slaves)

将本机的公钥内容(id_rsa.pub)拷贝到authorized_keys里面即可。

8.启动hadoop

/bin/start-all.sh

9.查看java的启动进程,包括master和slave的进程

/usr/jdk1.7.0_25/bin/jps

杀掉进程

kill -0 13439(进程号)

10.日志存放在logs文件夹里面
namenode和jobtracker的日志记录在master上面,而tasktracker及datanode是记录在slave机器上面。

http://archive.apache.org/dist/hadoop/core/hadoop-1.1.2/hadoop-1.1.2-bin.tar.gz

--安装wget
yum -y install wget




--删除目录下的所有文件
rm -rf *

scp -r ./hadoop-1.1.2 anker@192.168.1.109:/home/anker

--安装Hadoop2.x

1.建立虚拟机(32位的linux)
2.安装JDK(32位的jdk)
3.编辑hosts文件
4.关闭防火墙
5.部署免密码
6.下载hadoop2.x解压
7.修改配置文件
8.分发hadoop到各个节点
9.启动集群。

Hadoop的下载地址:http://archive.apache.org/dist/hadoop/core/hadoop-2.2.0/hadoop-2.2.0.tar.gz
Java的下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

yarn是hadoop的第二代mapreduce,解决了第一代的缺点,提高了性能。

新建文件夹:
DATA(数据文件夹)
NAME(存放元数据,NAMENODE会用到)
TMP(临时文件夹)

要修改的配置文件
hadoop-2.2.0/etc/hadoop/hadoop-env.sh
hadoop-2.2.0/etc/hadoop/yarn-env.sh
hadoop-2.2.0/etc/hadoop/slave.sh
hadoop-2.2.0/etc/hadoop/core-site.sh
hadoop-2.2.0/etc/hadoop/hdfs-site.sh
hadoop-2.2.0/etc/hadoop/mapred-site.sh
hadoop-2.2.0/etc/hadoop/yarn-site.sh
//masters不用设置,除非secondary namenode不在同一台机器

修改配置文件,设置java home
yarn-env.sh

export JAVA_HOME=/usr/lib/j2sdk1.5-sun

修改core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://anker.centos4:9000</value>----NAMENODE的位置
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/anker/hadoop-2.2.0/tmp</value>--hadoop的临时目录,需要提前建立好
<description>Abase for other temporary directories.</description>
</property>

<property>
<name>hadoop.proxyuser.hduser.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hduser.groups</name>
<value>*</value>
</property>
</configuration>

修改hdfs-site.xml

<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>h1:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/grid/hadoop-2.2.0/name</value>--name目录需要提前建立好
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/grid/hadoop-2.2.0/data</value>--data目录需要提前建好
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>


修改mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>h1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>h1:19888</value>
</property>
</configuration>


修改yarn-site.xml文件
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>h1:8032</value>
</property>

<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>h1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>h1:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>h1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>h1:8088</value>
</property>
</configuration>


启动集群及验证
格式化namenode:./bin/hdfsnamenode–format
启动hdfs: ./sbin/start-dfs.sh
此时在h1上面运行的进程有:namenode,secondarynamenode
h2和h3上面运行的进程有:datanode
启动yarn: ./sbin/start-yarn.sh
此时在h1上运行的进程有:namenode,secondarynamenode,resourcemanager
h2和h3上面运行的进程有:datanode,nodemanager

Hadoop 2.2.0上面 nodemanager = tasktracker
resourcemanager = jobtracker



Hadoop 第三讲

第一个Hello.world程序来检验Hadoop是否安装成功

--hadoop自带的例子wordcount

[anker@anker input]$ echo "hello world" > test1.txt
[anker@anker input]$ cat test1.txt
hello world
[anker@anker input]$ echo "hello hadoop" > test2.txt
[anker@anker input]$ cat test2.txt
hello hadoop
[anker@anker ~]$ cd hadoop-1.1.2
[anker@anker hadoop-1.1.2]bin/hadoop fs -ls #查看fs文件系统下面是否存在文件

[anker@anker hadoop-1.1.2]bin/hadoop fs -put ../input in #这里的hadoop是启动jvm的一个脚本  ../input上级目录的input下的文件

[anker@anker hadoop-1.1.2]bin/hadoop fs -ls ./in/* #列出in目录下的所有内容
-rw-r--r--   2 anker supergroup         12 2014-04-25 22:46 /user/anker/in/test1.txt
-rw-r--r--   2 anker supergroup         13 2014-04-25 22:46 /user/anker/in/test2.txt

[anker@anker hadoop-1.1.2]bin/hadoop jar hadoop-examples-1.1.2.jar wordcount in out #执行jar包中的wordcount类,将输出写入到out目录中

#查看输出结果
[anker@anker hadoop-1.1.2]$ bin/hadoop fs -ls
Found 2 items
drwxr-xr-x   - anker supergroup          0 2014-04-25 22:46 /user/anker/in
drwxr-xr-x   - anker supergroup          0 2014-04-25 22:51 /user/anker/out

[anker@anker hadoop-1.1.2]$ bin/hadoop fs -ls ./out #结果放在part-r-00000文件中
Found 3 items
-rw-r--r--   2 anker supergroup          0 2014-04-25 22:51 /user/anker/out/_SUCCESS
drwxr-xr-x   - anker supergroup          0 2014-04-25 22:50 /user/anker/out/_logs
-rw-r--r--   2 anker supergroup         25 2014-04-25 22:51 /user/anker/out/part-r-00000

#查看输出结果
[anker@anker hadoop-1.1.2]$ bin/hadoop fs -cat ./out/part-r-00000
hadoop  1
hello   2
world   1


#通过web了解hadoop的活动
1.通过用浏览器和http访问jobtracker所在节点的50030端口监控jobtracker
2.通过用浏览器和http访问namenode所在节点的50070端口监控集群

http://192.168.1.201:50070/
http://192.168.1.201:50030/



重启后永久性生效:(需要root用户)
开启:chkconfig iptables on
关闭:chkconfig iptables off
(2) 即时生效,重启后失效:
开启:service iptables start
关闭:service iptables stop
--查看具体端口
 netstat -nap | grep 9000  

 

分享到:
评论

相关推荐

    Hadoop学习资料

    第二代Hadoop包括两个版本,0.23.x和2.x。这两个版本相对于Hadoop 1.0,采用了一套全新的架构,包括HDFS Federation和YARN两个系统。2.x版本相较于0.23.x版本增加了NameNode HA(高可用性)和Wire-compatibility...

    java及hadoop学习资料

    这份“java及hadoop学习资料”压缩包提供了丰富的学习资源,帮助初学者或进阶者深入理解和掌握这两个领域的核心概念。 Java部分: 1. **Java基础知识**:Java的学习通常从基础语法开始,包括数据类型、变量、控制...

    最新Hadoop学习笔记

    **Hadoop学习笔记详解** Hadoop是一个开源的分布式计算框架,由Apache基金会开发,主要用于处理和存储海量数据。它的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce,两者构成了大数据处理的基础...

    Hadoop学习之路(三)Hadoop-2.7.5在CentOS-6.7上的编译

    #### 二、下载Hadoop源码 **步骤1:** 登录Hadoop官方网站(http://hadoop.apache.org/),找到下载页面。 **步骤2:** 根据自己的需求选择Hadoop版本。这里推荐选择较为稳定的版本,如Hadoop-2.7.5。原因有两点:...

    Hadoop学习必看路线图2.pdf

    ### Hadoop学习必看路线图概览 #### 一、Linux与Python基础 - **Linux安装及基本操作**:这是Hadoop学习的基础,包括Linux系统的安装、常用的命令行操作(如文件管理、进程管理等)。熟悉Linux环境对于后续的学习...

    Hadoop学习总结.doc

    HDFS(Hadoop Distributed File System)是Hadoop的核心组件之一,它主要用于存储大规模的数据集。HDFS默认的基本存储单位是64MB的数据块。与传统的文件系统不同,HDFS将文件分割成若干个块进行存储。尽管每个块的...

    Hadoop学习总结和源码分析

    接下来,“Hadoop学习总结之二:HDFS读写过程解析.doc”详细解释了HDFS的数据读写流程。在写入数据时,客户端首先与NameNode通信获取数据块位置,然后将数据分块并发送到各个DataNode。在读取数据时,客户端同样先...

    Hadoop入门学习文档

    #### 二、Hadoop框架 ##### 2.1 Hadoop简介 - **定义**:Hadoop是由Apache基金会开发的分布式系统基础架构,用于处理大规模数据集。 - **目标**:解决海量数据的存储和分析计算问题。 - **生态体系**:广义上的...

    hadoop学习资料书

    【Hadoop学习资料书】 Hadoop是大数据处理领域的一个核心框架,由Apache软件基金会开发,以其分布式计算模型和高容错性而闻名。本学习资料书主要针对Hadoop的初学者,旨在提供全面的基础知识解析,帮助读者快速掌握...

    hadoop3.1.3学习资料

    这个学习资料包含的"笔记"可能涵盖了Hadoop的核心组件、生态系统、安装配置以及实际操作等多个方面。以下是对Hadoop 3.1.3的一些关键知识点的详细说明: 1. **Hadoop核心组件**: - **HDFS(Hadoop Distributed ...

    学习hadoop--java零基础学习hadoop手册

    ### Hadoop与Java基础知识学习手册 #### 一、Hadoop简介及Java基础知识 **标题**:“学习hadoop--java零基础学习hadoop手册” **描述**:“学习hadoop--java零基础学习hadoop手册” 本手册旨在为完全没有Java基础...

    3.Hadoop学习笔记.pdf

    它特别适合于存储非结构化和半结构化数据,并且能够存储和运行在廉价硬件之上。Hadoop具有高可靠性、高扩展性和高吞吐率的特点,因此它成为了处理大数据的理想平台。 Hadoop的核心组成部分包括: 1. HDFS(Hadoop ...

    hadoop学习笔记.rar

    二、Hadoop学习笔记之五:使用Eclipse插件 Eclipse插件是开发Hadoop应用的重要工具,它提供了集成的开发环境,使得开发者可以更方便地编写、调试和运行Hadoop程序。通过插件,用户可以创建Hadoop项目,编写MapReduce...

    Hadoop学习总结

    以下是对Hadoop学习的详细总结: **HDFS(Hadoop Distributed File System)简介** HDFS是Hadoop的核心组件之一,是一个高度容错性的分布式文件系统。它被设计成能在普通的硬件上运行,并能够处理大规模的数据集。...

    HADOOP学习笔记

    【HADOOP学习笔记】 Hadoop是Apache基金会开发的一个开源分布式计算框架,是云计算领域的重要组成部分,尤其在大数据处理方面有着广泛的应用。本学习笔记将深入探讨Hadoop的核心组件、架构以及如何搭建云计算平台。...

    Hadoop学习时间轴

    根据提供的信息,我们可以详细地解析出关于Hadoop学习时间轴中的关键知识点,这些知识点主要集中在Hadoop的基础架构、MapReduce工作原理以及Hive在实际应用中的优化等方面。 ### Hadoop学习时间轴概述 Hadoop是一...

    hadoop学习资料(一)

    Hadoop学习资料(一)包含了从第一周到第十六周的课程笔记,是作者在深入学习Hadoop过程中积累的知识结晶。这份资料对于那些想要踏入大数据处理领域的初学者或者是正在提升Hadoop技能的人来说,无疑是一份宝贵的资源...

Global site tag (gtag.js) - Google Analytics