配置hadoop

2.1 上传hadoop包

2.2 解压hadoop包
首先在根目录下创建一个cloud目录

mkdir /cloud

tar -zxvf hadoop-2.2.0.tar.gz -C /cloud/

tar: 打包和解包
-z:用来处理gz格式
x:代表释放 c:代表创建
v:显示解压过程详情
f:file
-c:把文件解压到什么地方

2.3 配置hadoop伪分布式(要修改5个配置文件)
/cloud/hadoop-2.2.0/etc/hadoop
修改配置文件

第一个:hadoop-env.sh hadoop依赖jdk
vim hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_60

在底行模式可以执行,查看java_home
:echo ${JAVA_HOME}

第二个:core-site.xml
vim core-site.xml

<configuration>
<!-- 用来指定HDFS的老大(NameNode的地址) -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://cloud01:9000</value>(这里写主机名,经过host文件配置过,也可以写ip地址)
</property>
<!-- 用来指定Hadoop运行时产生文件的存放目录,配置linux上某个具体的目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/cloud/hadoop-2.2.0/tmp</value>
</property>

</configuration>

第三个:hdfs-site.xml

<configuration>
<!-- 指定HDFS保存数据副本的数量 ,如果不配置默认副本数为3 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>

</configuration>

第四个:mapred-site.xml

目录下没有mapred-site.xml,只有mapred-site.xml.template
需要改名

mv mapred-site.xml.template mapred-site.xml

<configuration>
<!-- 告诉hadoop以后MR运行在YARN上 YARN是一个资源调度系统,
不仅仅可以运行MapReduce,还可以运行Storm,Spark等计算框架 -->
<property>
<name>mapreduce.frameword,name</name>
<value>yarn</value>
</property>
</configuration>

第五个:yarn-site.xml
vim yarn-site.xml

<configuration>
<!-- NodeManager 获取数据的方式是 shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的老大(ResourceManager) 的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>cloud01</value>
</property>

</configuration>

2.4 将hadoop的bin 添加到环境变量中,
可以再任何目录下都可以运行

vim etc/profile

export JAVA_HOME=/usr/java/jdk1.7.0_60
export HADOOP_HOME=/cloud/hadoop-2.2.0/etc/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

#刷新配置
source etc/profile

.配置免密码登录

免密码登录可以在任意一台机器上输入命令,可以启动所有机器上的进程

如果不做免密码登录,需要在每一台机器上输入启动进程命令

配置201上的免密码登录

在201上生成秘钥

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

在.ssh目录下生成

[root@bogon .ssh]# ls
authorized_keys id_dsa id_dsa.pub known_hosts
[root@bogon .ssh]#

id_dsa 为私钥,id_dsa.pub为公钥

配置单台机器的免密码登录

执行下列命令

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

配置跨节点的免密码登录

先执行

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 

生成id_dsa.pub公钥

将id_dsa.pub拷贝到将要免密码登录的那台机器上

scp id_dsa.pub root@192.168.1.202:~

在 192.168.1.202 上将id_dsa.pub追加到 authorized_keys 日子文件上

$ cat ~/id_dsa.pub >> ~/.ssh/authorized_keys

使用 more authorized_keys 查看

在201上使用  ssh 192.168.1.202:22 登录到202上

需要先做本地免密码登录,然后做跨节点免密码登录

配置结果为 201-->202,201-->203, 如果需要相反,则主要重复上边相反过程

2.5 初始化文件HDFS(格式化文件系统)

#hadoop namenode -format(过时了,但还可以用)

#格式化只需要一次
[root@cloud01 bin]# hdfs namenode -format

#格式化后会产生tmp目录

2.6 启动HDFS和YARN
cd /sbin
./start-all.sh(过时了 This script is Deprecated. Instead use start-dfs.sh
and start-yarn.sh)

#有个小问题(需要多次输密码)

可以通过 jps 的方式验证(jps是java 的命令,在bin下)
还可以通过浏览器的方式验证
http://192.168.1.201:50070/ (hdfs管理界面)
http://192.168.1.201:8088/ (yarn管理界面)

Live Nodes : 代表DataNode存活的节点

Browse th filesystem: 浏览文件系统
使用主机名 需要在windows上 配置映射关系
c:/windows/system32/dirvers/etc/host

2.7 测试HDFS
jps
NameNode: HDFS的老大,HA(High Ability,高可靠性)集群中NameNode是多个

DataNode:HDFS的小弟

SecondaryNameNode:NameNode的助理,完成数据的同步,但是不是实时的

ResourceManager:YARN的老大,负责资源的调度

NodeManager:YARN的小弟,负责干活

文件的上传

上传Linux上的文件到HDFS上

hadoop fs -put /root/jdk-7u60-linux-i586.gz hdfs://cloud01:9000/jdk

上传成功后可以再http://192.168.1.201:50070/ (hdfs管理界面)查看

文件的下载

从 HDFS 下载文件到本地

hadoop fs -get hdfs://cloud01:9000/jdk /home/jdk1.7

2.8 测试 MR 和 YARN

HDFS块的大小

Hadoop 1.0 块的大小默认 64M 67108864字节
Hadoop 2.0 块的默认大小 128M 134217728字节

问什么要进行分块存储?

方便存储,MapReduce方便读取

HDFS 的shell

-count 统计文件的个数
hadoop fs -count /

输出文件夹个数 文件个数 大小

hadoop fs -ls -R -h /

-R代表递归查看,-h (humanRead)人类可读 将字节变成带单位的 M 或 K 等

hadoop fs -mkdir /cloud 创建目录

HDFS的文件模仿Linux上

hadoop fs -ls /

-rw-r--r-- 1 root supergroup 39343 2014-06-18 10:33 /in.log
drwxr-xr-x - root supergroup 0 2014-06-18 10:44 /itcast0106

drwxr-xr-x-
(第1位:类型;3位:所属用户权限;3位:所属组权限;3位:其他用户权限)

- 如果是文件夹表示并不存储
1 如果是文件表示文件的副本个数
root 所属用户
supergroup 所属组
39343 大小
最后修改时间
目录/文件名

hadoop fs -rm 可以删除文件,不能删除 目录
hadoop fs -rm -r 可以删除目录

递归的去掉执行权限

hadoop fs -chmod -R -x /wcout (-R 表示递归 x表示执行权限)

hadoop fs -chown supergroup /in.log 修改所属用户
hadoop fs -chgrp root /in.log 修改所属组

一次指令同时修改
hadoop fs -chown supergroup:root /wcout

如果需要递归修改,需要添加 -R

hadoop 2.0

hdfs dfs -ls /

HDFFS架构

元数据存储细节

(内存一份,磁盘一份)
NameNode(FileName,replicas,block-ids,id2host...)

文件 副本数 数据块 每块所在的机器上
test/a.log, 3, {blk_1, blk_2}, [{blk_1: [h0,h1,h3]},{blk_2:[h0,h2,h4]}]

每个文件都有一个校验值,在读取时如果校验值发生变化,说明文件损坏
这里使用CRC32校验算法

NameNode

  hdfs-site.xml 的 dfs.name.dir 属性

  是整个文件系统的管理节点。维护整个文件系统的文件目录树,文件/目录的
  元数据信息和每个文件对应的数据块列表。接收用户的请求操作。

  文件包括:

  ① fsimage:元数据镜像文件。存储某一时段NameNode内存元数据信息,保存在磁盘中。
  (内存当中MateDate的镜像文件,内存的东西序列化到磁盘中)

  ② edits:操作日志文件。
  (用来记录操作日志的信息)

  ③ fstime:保存最近一次checkpoint(还原点)的时间
  (checkpoint是保存最近一次做还原点的信息)

  以上这些文件是保存在linux的文件系统中。

  NameNode 始终在内存中保存metedata,用于处理“读请求”

  到有“写请求” 到来时,nameNode会首先写editlog到磁盘,即向edits文件中写日志,
  成功返回后,才会修改内存,并且向客户端返回

  Hadoop会维护一个 fsimage 文件,也就是nameNode中metedata的镜像,但是fsimage不会随时与namenode
  内存中的metedata保存一致,而是每隔一段时间通过合并edits文件来更新内容(Hadoop 1.0 与 2.0的伪分布式,)
  hadoop2.0会实时进行合并).
  SecondaryNameNode就是用来合并fsimage和edits文件来更新NameNode的metedata的(用新的替换旧的).

SecondaryNameNode

  HA的一个解决方案.但不支持热备.配置即可。

  执行过程:

    从NameNode 上下载元数据信息(fsimage,edits),然后把二者合并,生成新的fsimage,在本地保存,并将其推送到NameNode,替换旧的fsimage

  默认安装在NameNode 节点上,但这样...不安全

注:

  在合并的过程中如果有新的client操作,则产生新的edits.new文件,不在使用之前的edits文件

合并的触发条件(什么时候checkpoint):

  fs.checkpoint.period 指定两次checkpoint的最大时间间隔,默认3600秒

  fs.checkpoint.size 规定edits文件的最大值,一旦超过这个值则强制checkpoint,不管是否达到最大时间间隔。默认大小是64M。

  

Hadoop-2.2.0 (传 hadoop-2.2.0.tar.gz)的更多相关文章

  1. 中标麒麟V6.0安装 mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz

    在中标麒麟6.0上安装mysql, 1.先从官网(https://dev.mysql.com/downloads/mysql/5.7.html#downloads)下载 . 我的选择如上图. 2.下载 ...

  2. 使用其他Java工程导入hadoop源码用于在hadoop工程中查看源码

    疑问:在开发hadoop程序的时候,有时候需要查看hadoop的源码,但是开发环境看不到,甚是烦恼,经过网上搜索和琢磨,终于实现了,虽然有点绕,但是目的达到了. 第一步:下载hadoop的源码包:ha ...

  3. Hadoop 新生报道(二) hadoop2.6.0 集群系统版本安装和启动配置

    本次基于Hadoop2.6版本进行分布式配置,Linux系统是基于CentOS6.5 64位的版本.在此设置一个主节点和两个从节点. 准备3台虚拟机,分别为: 主机名 IP地址 master 192. ...

  4. Hadoop新生报到(一) hadoop2.6.0伪分布式配置详解

    首先先不看理论,搭建起环境之后再看: 搭建伪分布式是为了模拟环境,调试方便. 电脑是win10,用的虚拟机VMware Workstation 12 Pro,跑的Linux系统是centos6.5 , ...

  5. Ambari2.7.3 和HDP3.1.0搭建Hadoop集群

    一.环境及软件准备 1.集群规划   hdp01/10.1.1.11 hdp02/10.1.1.12 hdp03/10.1.1.13 hdp04/10.1.1.14 hdp05/10.1.1.15 a ...

  6. Ubuntu 14.10 下Hadoop FTP文件上传配置

    最近老板提出一个需求,要用Hadoop机群管理生物数据,并且生物数据很多动辄几十G,几百G,所以需要将这些数据传到HDFS中,在此之前搭建了HUE用来图形化截面管理HDFS数据,但是有个问题,上面使用 ...

  7. springMVC + hadoop + httpclient 文件上传请求直接写入hdfs

    1.首先是一个基于httpclient的java 应用程序,代码在这篇文章的开头:点击打开链接 2.我们首先写一个基于springMVC框架的简单接收请求上传的文件保存本地文件系统的demo,程序代码 ...

  8. hadoop用put上传文件时报错

    用命令-put上传文件 报错0 datanode(s) running 原因是进行了多次格式化 解决办法: 停止集群 删除在hdfs中配置的data目录(即在core-site.xml中配置的hado ...

  9. hadoop fs -put上传文件失败,WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Problem connecting to server: master:8020

    hadoop fs -put上传文件失败 报错信息:(test文件夹是已经成功建好的) [root@master ~]# hadoop fs -put test1.txt /test // :: WA ...

随机推荐

  1. HTML DOM 元素对象

    HTML DOM 元素对象 HTML DOM 节点 在 HTML DOM (Document Object Model) 中, 每个东西都是 节点 : 文档本身就是一个文档对象 所有 HTML 元素都 ...

  2. Netty 自动重连

    from: http://www.dozer.cc/2015/05/netty-auto-reconnect.html 自动重连 用 Netty 写 Client 和 Server 的时候必须要去处理 ...

  3. K910 升级Android 4.4.2可用的Google Service Framework

    把手机换成了K910, 看上的是骁龙800的cpu和电子罗盘... 比V987是升级一大截了. 花了一个晚上加半个上午的时间终于搞定了GoogleServiceFramework, 试了大概四五个网上 ...

  4. poj3270

    Cow Sorting Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6750   Accepted: 2633 Descr ...

  5. Could not load file or assembly 'System.Data.SQLite' or one of its dependencies

    试图加载格式不正确的程 异常类型 异常消息Could not load file or assembly 'System.Data.SQLite' or one of its dependencies ...

  6. MySQL分表(Partition)学习研究报告

    最近在开发一个新的项目,可能会产生大数据量,需要对部分表进行分表操作,故来研究学习MySQL的分表功能. 由于实验报告已经写成Exlce文件了,各位看过就直接下载吧:MySQL分表分析报告.xls 以 ...

  7. DefaultFilesMiddleware中间件如何显示默认页面

    DefaultFilesMiddleware中间件如何显示默认页面 DefaultFilesMiddleware中间件的目的在于将目标目录下的默认文件作为响应内容.我们知道,如果直接请求的就是这个默认 ...

  8. QT 数据库编程四

    //vmysql.cpp #include "vmysql.h" #include <QMessageBox> Vmysql::Vmysql() { mysql_ini ...

  9. web—第三章XHTML

     web—第三章XHTML 又是一周 我们学的了做表单:一开始我以为表单是表格.但结果:表单是以采集和提交用户输入数据的,这样讲很迷,说简单点就是登陆端.比如:Facebook.twitter.Ins ...

  10. Webwork 学习之路【02】前端OGNL试练

    1.OGNL 出现的意义 在mvc中,数据是在各个层次之间进行流转是一个不争的事实.而这种流转,也就会面临一些困境,这些困境,是由于数据在不同世界中的表现形式不同而造成的: a. 数据在页面上是一个扁 ...