1day.docx
《1day.docx》由会员分享,可在线阅读,更多相关《1day.docx(17页珍藏版)》请在冰点文库上搜索。
1day
7天课程体系:
(1)hadoop原理介绍和搭建伪分布环境
(2)HDFS体系结构及shell、java操作方式,RPC
(3)MapReduce体系结构及各种算法[1]
(4)MapReduce体系结构及各种算法[2]
(5)Zookeeper操作、hadoop集群搭建,sqoop
(6)HBase体系结构及基本操作、flume、pig
(7)Hive体系结构及基本操作和最后项目
hadoop是什么?
open-sourcesoftwareforreliablescalabledistributecompute
解决:
·海量数据的存储(HDFS)
·海量数据的分析(MapReduce)
·受Google三大问题的启发(GFS,MapReduce,Bigtable)
YARN,yetanotherresourcen
2.0之前只能运行Mapreduce,一般MapReduce是处理以前的数据并不能事实处理
只要符合YARN的接口的程序就可以运行在YARN上,MapReduce,Storm,spark都可以运行在YARN上,
·NoSql—notonlysql
Hadoop具体能做什么?
hadoop擅长日志分析;
天猫,现在使用storm来进行实时推荐
淘宝数据魔方项目:
MyFox—MySql集群—存储查询次数不是很多的数据
Prom—Hbase集群
1024G=1T
1024T=1P
hadoop生态圈
Hadoop核心:
HDFS:
hadoopDistributedFileSystem分布式文件系统
MapReduce:
并行计算框架
YASN:
YetAnotherResourcenegotiator:
资源管理调度系统
hadoop1.0与hadoop2.0的对比:
hadoop2.0的图表示在YARN之上不仅仅可以运行MapReduce还可以运行其他的计算模型eg:
Storm,Spark
YARN的产生背景:
·直接源于MRv1在几方面的无能:
1、扩展受限
2、单点故障
3、难以支持MR之外的计算
·多个计算框架各自为战,数据共享困难
1、MR离线计算框架
2、Storm实时计算框架
3、Spark内存计算框架
***namenode在hadoop2.0中有多个?
?
?
!
既是实现mapReduce的map和Reduce这个两阶段
**单节点的物理结构
有几个进程就有几个main方法!
hadoop的部署方式:
·本地模式:
使用eclipse进行本地调试时使用的,只可以启动一个map和一个Reduce
·伪分布式模式:
比较适合开发与学习,但是当涉及到一些性能问题时需要提交到集群上
·集群模式:
pseundo的安装步骤:
·hadoop关闭防火墙,因为hadoop一般是公司内部使用所以可以关闭。
或者将这些通信时会使用到的端口加入到防火墙信任的列表中。
·修改ip是将每台pc的ip固定,是为了防止pc重新启动时ip不会改变
·sshsecureshell安全登陆
**在vmware中点open,找到.vmx文件,选I’moveit就表示直接移动它,选I’copyit就会产生一个新的mac地址,既是会产生一个新的虚拟机。
这里是伪布式所以选择I’moveit
**修改ip:
在修改ip之前先选定一个网段,
hostonly—仅主机模式下,在没有网络时win7和linux也可以进行通讯,设置方法:
vmware图标右键打开文件位置点击vmnetcfg.exe进行配置注意在安装虚拟机后pc中将会多出来2个networkAdapter网络适配器,启动host-only模式时需要确认该模式对应的adapter时启用状态而非禁用状态:
在vmnetcfg中可以设置自己喜欢的网段然后在win7的更改网络适配器那一块,修改仅主机模式使用的networkadapter(这里时vmnet1)的ipv4的ip地址使得win7的ip固定【192.168.72.1】修改Linux的ip地址【三种方法见下】
修改Linuxip的三种方法:
1、图形化界面:
右上角的小电脑
选择网卡,编辑ipv4setting
这里获取ip的方法是DHCP,动态获取ip需要修改为Manual【手动设置】点击add添加ip【192.168.72.X】,netmask:
24,Gateway:
192.168.72.1
2、使用命令setupNetworkconfigurationDeviceconfiguration修改eth0,点击space,进行输入
3、直接修改ip【建议使用】
vim/etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO改为static
添加IPADDR=”192.168.72.88”
继续添加
NETMASK=”255.255.255.0”
GATEWAY=”192.168.72.1”
如果机器想要上网一定要配置:
DNS1=”8.8.8.8”—这是google提供的免费DNS,DNS1是主DNS,还需要设置一个备用DNSf2防止DNS出现问题
DNS2=”8.8.4.4”
**桥接和NAT要求有网络才可以用
·关闭防火墙—serviceiptablesstop,注意这个命令在机器重启之后防火墙还再次开启,因为iptables是开机自启动服务可以使用chkconfig命令进行查看(checkconfig)
**chkconfigiptables--list
iptables0:
off1:
off2:
on3:
on4:
on5:
on6:
off
表示当Linux在25这几种状态时防火墙是打开的
vim/etc/inittab可以查看到0-6代表的状态;一般服务器使用3这种状态,以保以后启动时没有图形界面了可以节省一些内存,现在我使用的是5—图形界面状态
**chkconfigiptablesoff将所有的状态的防火墙关闭
重新启动Linux,若仅仅是修改网络是不用重新启动的
想要ping通:
注意使用host-only模式,且禁用本地链接
ERROR:
1、windows下的ipv4没有配对;
2、windows防火墙没有关闭
·安装jdk,hadoop要求必须安装jdk1.6以上版本
Win7与Linux的文件传输:
1、设置共享文件夹
在vmware中选择“虚拟机”设置选项共享文件夹总是启用添加,选择一个文件夹
***使用文件夹
Linux:
cd/mnt进入到mnt文件夹,在进入hgfs可以看到【演示失败】
2、使用secure-crt通过网络上传到linux
3、或者使用filezilla上传
**安装hadoop**
请记得配置ssh免密码登录;secureshell
(1)、win7下将hadoop包传到linux目录,并解压hadoop压缩包
(2)、修改5个配置文件
可以在这个网站下载:
archive.apache.org/dist/这个网站上有所有的apache的项目
**注意hadoop上传的数据千万不要放在系统盘上,不然有可能os无法启动;
hadoop-2.7.0下的目录结构:
bin:
binary存放的是一些可执行的脚本
include:
存放本地库的头文件,
libexec:
sbin:
启动停止相关的
etc:
hadoop的配置文件存放的目录
lib:
/lib/native本地库,本地库依赖的java包在share/hadoop中
share:
share下有hadoop【hadoop中各个模块相关的jar包都在下面】与doc两个目录
**hadoop常用的目录
bin:
存放的hadoop的脚本
sbin:
存放开始结束相关的脚本
etc:
存放配置文件的目录,注意不是根下的etc
**************修改配置文件******************
1、vim/etc/hadoop/hadoop-env.sh –修改hadoop的环境变量,hadoop依赖jdk,在这设置JAVA_HOME
ps:
小技巧
JAVA_HOME是个变量,所以在vim的底行模式可以输出
命令:
echo$JAVA_HOME
查询到$JAVA_HOME后在进行设置就可以了
2、修改core-site.xml
—用来制定HDFS的老大(NameNode)的地址-->
fs.defaultFS
hdfs:
//pseudo:
9000
—用来指定hadoop运行时产生文件的存放目录-->
hadoop.tmp.dir
/home/hadoop/software/hadoop-2.7.0/tmp
3、修改hdfs-site.xml—伪分布式副本数为1
—制定HDFS保存数据副本的数量-->
dfs.replication
1
4、修改mapred-site.xml,没有这个文件只有一个模版文件,所以自己手动改名
修改文件名:
mvmapred-site.xml.templatemapred-site.xml
—设置mapreduce运行在yarn上-->
mapreduce.framework.name
yarn
5、修改yarn-site.xml文件
—nodemanager获取数据的方式是shuffle的方式-->
yarn.nodemanager.aux-services
mapreduce_shuffle
—指定yarn的老大ResourceManager的地址;yarn就是一个资源调度系统-->
yarn.resourcemanager.hostname
pseudo【主机名或是ip】
***************配置好之后,开始初始化hadoop*******************************
准备工作:
·将hadoop添加到环境变量中
将hadoop下的bin目录添加到环境变量,以至于在任何一个目录下都可以运行hadoop/bin中的脚本;vim/etc/profile中添加hadoop_home,并将$hadoop_home/bin添加到path变量中,也可以将sbin也添加进去---最终source/etc/profile(刷新配置)
#hadoop_home
exportHADOOP_HOME=/home/hadoop/software/hadoop-2.7.0
#enviromentparameter
exportPATH=$PATH:
$JAVA_HOME/bin:
$HADOOP_HOME/bin:
$HADOOP_HOME/sbin
*******初始化HDFS(格式化文件系统)*********
./hadoopnamenode–formathadoop脚本在bin下,过时了现在用hdfs进行格式化,如果不知道跟什么参数可以hdfs+直接回车
格式化:
hdfsnamenode–format,当看到/tmp/dfs/namehasbeensuccessfullyformatted.时表示格式化成功
ps:
想看hadoop在哪可以输入whichhadoop查看脚本在哪
注意:
在格式化之前是没有一开始的那个参数的
************************启动hadoop的hdfs和yarn*****************************
格式化之后可以启动hadoop了,未配置sbin的环境变量时进入/sbin启动hadoop
启动:
./start-all.sh直接使用start-all需要输入多次密码的,与yes;过时脚本
##thisscriptisdeprecated。
Insteadusestart-dfs.shandstart-yarn.sh
推荐使用:
start-dfs.sh与start-yarn.sh-停止是stop-yarn.sh
**解决多次输入密码问题
最终使用jps检验(javaprocesssnapshort)这是java的命令,可以使用whichjps查看
****************windows下通过browser访问管理界面******************
准配操作:
在这个文件中添加Linux主机名和ip的映射关系
C:
\Windows\System32\drivers\etc\hosts
[hdfs]http:
//host:
50070activeNodes是datanode
[mapreduce管理界面]http:
//host:
50030
[yarn的管理界面]http:
//host:
8088activenodes是nodemanager(yarn的老大是resourcemanager,小弟是nodemanager)
正确启动时应该存在的进程有:
SecondaryNameNode
NameNode
DataNode
ResourceManager
NodeManager
jps
知识补充:
·secondarynamenode:
不是namenode的一个热备,只是部分备份;所以
secondaryNameNode只是NameNode的助手,在hadoop2.x中为了保证安全性在cluster中有不止一个namenonde;
·NameNode:
是hdfs部门的老大
·DataNode:
是hdfs部门老大的小弟,负责存放数据块
·ResourceManager:
负责资源的管理与调度,是yarn部门的老大
·NodeManager:
是ResourceManager的小组长
*********************验证hdfs***************
方法:
向hdfs中上传一个文件
ps:
既是通过linux上的客户端,将linux文件系统中的文件上传到hdfs文件系统中
既是开启一个客户端进行上传文件:
hadoopfs–put【不知道打什么命令就hadoop直接回车】
之前使用-copyFormLocal;现在使用put上传;
hdfs中的地址写成hdfs:
//pseudo:
9000/jdk
hadoopfs-put~/software/jdk-8u45-linux-x64.rpmhdfs:
//pseudo:
9000/jdk
hadoopfs–put
hadoopfs运行hdfs的一个客户端,-put上传文件,上传到hdfs的jdk目录
登陆web管理界面验证:
http:
//pseudo:
50070
进入yarn的管理界面是
http:
//pseudo:
8088
下载文件:
方式1、在web界面点击目录download
方式2、使用命令下载
hadoopfs-gethdfs:
//pseudo:
9000/jdk/home/hadoop/jdk1.8
******************测试MapReduce和yarn******************
使用hadoop官方的示例程序
cd~/software/hadoop-2.7.0/share/hadoop/mapreduce/
示例程序存放hadoop的share目录下
mapreduce的统计单词是用来统计相同单词在一个文件或者多个文件中出现次数,统计单词时首先要将
运行mapreduce命令:
hadoop
一般使用hadoop,这个命令在/bin下,可以通过whichhadoop进行查看
hadoopjar运行一个jar包
命令:
hadoopjarhadoop-mapreduce-examples-2.7.0.jarwordcounthdfs:
//pseudo:
9000/words(in目录)hdfs:
//pseudo:
9000/wcout(out目录)
--命令结果按照字典顺序排列;在web管理目录下进入结果目录只要看见success文件就知计算成功
运行hadoop的各种命令时,需要将有关文件传到hdfs系统上不能直接在linux文件系统上运行。
上传word.txt文件到hdfs的words目录下:
hadoopfs-putword.txthdfs:
//pseudo:
9000/words—words目录可以一开始不存在
查看hadoop根目录:
命令1:
hadoopfs-lshdfs:
//pseudo:
9000/
命令2:
hadoopfs–ls/
hadoop命令的输出结果可能很大,所以它也需要存放在hdfs上
如何进行hadoop安装时错误排查?
·查看logs目录下的日志
**************************配置ssh******************************
1、配置ssh的前提条件是,两台机器可以相互ping通既是位于同一个网段
2、可以使用如下命令将公钥发送给某一台机器
ssh-copy-idpseudo
3、