|
名称节点不会存放数据块的,可以存但是不会这么做。namenode目录挂了,单点故障
namenode
secondarynamenode 备份,防止单点故障就完了,最重要的还是这目录,这叫做镜像
datenode datenode datenode 3个
分布式
--------------
由分布在不同主机上的程序(进程)协同在一起才能构成整个应用。
browser/web server:瘦客户端程序。
4V
----------------
1.volumn: 体量大
2.velocity: 速度快
3.variaty: 样式多
4.value: 价值密度低
hadoop
--------------
可靠地、可伸缩的、分布式计算的开源软件。
是一个框架,允许跨越计算机集群的大数据集分布式化处理,使用简单的编程模型(MapReduce)。
可从单个服务器扩展到几千台主机,每个节点提供了计算和存储功能。
不依赖于硬件处理HA,在应用层面上实现。
hadoop模块----解决了两个问题,存储和计算
-----------
1.hadoop common//公共类库,支持其他模块
2.HDFS//hadoop distributed file sytsem,hadoop分布式文件系统
3.Hadoop YARN//Yeah another resource ,作业调度和资源管理的框架。
4.Hadoop MapReduce//基于yarn系统的大数据集并行处理技术。
liunx
jps
jps -v
which jps
which xxx//在PATH查看指令xxx的目录
whereisxxx//查询命令的binary、Source、manual 查找这个指令相关的二进制指令和文件
hadoop安装
配置用到的书 Hadoop.The.Definitive.Guide.4th 在Appendix A.Installing ...里面有讲到site.xml配置
---------------
1.jdk
JAVA_HOME
PATH
2.tar hadoop.tar.gz
3.配置环境变量
HADOOP_HOME------------HADOOP_HOME=/soft/hadoop
PATH --------------- /soft/hadoop/bin:/soft/hadoop/sbin ----这样配好就是独立模式了
4.配置hadoop---配置的时候有3种模式
1.standalone | local --------------独立模式,或者叫本地模式
a.没有守护进程,所有程序运行在同一JVM中,利于test和debug.容易测试和调试
b.查看文件系统
$>hadoop fs -ls ///查看就是本地文件系统
2.Pseudo distributed Mode//伪分布模式,模拟完全分布式,是完全分布式的特列
[配置文件${hadoop_home}/etc/hadoop/*-site.xml]
[core-site.xml]
fs.defaultFS
hdfs://localhost/
完全分布式另外两个副本在同一个机架上,加自己一共3个副本的----伪分布是配置1
[hdfs-site.xml]
dfs.replication=1
[mapred-site.xml]
mapreduce.framework.name=yarn
[yarn-site.xml]
yarn.resourcemanager.hostname=localhost
yarn.nodemanager.aux-services=mapreduce_shuffle
gedit编辑后会产生备份文件,图形软件打开文字后的首选项里面吧创建一个备份拷贝给拿掉edit-editor
ls -al |grep site.xml
删除之前生成的备份文件rm -f *~^C
3.[配置SSH]---在nanmenode节点上远程登录其他主机把任务启动起来,登录密码太麻烦,配置无密码登录
ps -Af|grep ssh 看看有没有安装运行的进程sshd 安装完后的服务端 ,which ssh 查看客户端
1.安装ssh软件
$>sudo apt-get install ssh//安装服务端(sshd)和客户端(ssh)以及相关软件(ssh-keygen).
2.生成密钥对rsa是算法 ''无秘 -f指定目录 用户的主目录
$>ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
有id_rsa.pub的那个是公钥
3.追加公钥到对方的认证库中。还有ssh连上其他电脑 不需要sudo哦
cat输出这个内容 >>追加 可以追加很多人的秘钥
$>cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
4.测试ssh到localhost
$>ssh localhost
4.格式化hdfs文件系统 ---Hadoop.The.Definitive.Guide.4th 在Appendix A.Installing --configuration---pseudodist
自己格式化的时候报错了,把hostname改为原来的ubutnu后重启就正常了
#>hdfs namenode -format// hadoop/bin/hdfs
5.启动hdfs和yarn守护进程
$>start-dfs.sh
$>start-yarn.sh
mr-jobhistory-daemon.sh start historyserver 这个也要起,先不用,先不起
或者start-all.sh就等于这上面两个(貌似用这个开会少一个进程)----开启后开 jps看是否有5个对应的守护进程(第二次启动电脑后启动程序就少个namenode,格式化hdfs后重启就又有了,不知道为什么)
$>stop-yarn.sh// hadoop/sbin/ 停止进程 ----和开启的顺序相反,按照上层的顺序
$>stop-yarn.sh
mr-jobhistory-daemon.sh stop historyserver 这个也要起,先不用,先不起
stop-all.sh已经过时了,推荐用上面的
DataNode
NameNode
SecondaryNameNode 文件系统
ResourceManager 名称管理器 yarn调度框架
NodeManager节点管理器
6.配置目录的指定方式-(start-yarn.sh,start-dfs.sh用到这个)--------想用哪种把哪种链接指向一个hadoop 比如 ln -s hadoop_pseudo hadoop(这样不会覆盖的,第二次要链接其他的先把他删除)直接改链接更方便
切花为local的话,hdoop fs -ls -R / 这样看的就是本地的文件系统了
a.默认方式
${hadoop_home}/etc/hadoop/*.xml //默认的,有点时候做多种配置
b.通过启动参数指定配置目录
$.start-dfs.sh --config /soft/hadoop/etc/hadoop command// hadoop/sbin
c.通过设置环境变量HADOOP_CONF_DIR
$>export HADOOP_CONF_DIR=/soft/hadoop/etc/hadoop_pseudo
把这个环境变量干掉 export HADOOP_CONF_DIR 直接这样
然后export HADOOP_CONF_DIR=
hdfs namenode -format格式化的时候也有提到相关的配置
用法实列
把/soft/hadoop/etc/hadoop改为/soft/hadoop/etc/hadoop_pseudo,这样直接启动就启动不了,用到下面配置目录的指定方式了
start-all.sh --config /soft/hadoop/etc/hadoop_pseudo
拷贝文件夹 cp -r hadoop_pseduo hadoop_local 要加-r
7.目录操作
hadoop fs -mkdir -p /user/$USER ---------------------主目录,用这个,这样hadoop fs -ls 就会看到主目录去
$>hadoop fs -mkdir -p /user/ubuntu//创建目录 -p 多级目录
$>hadoop fs -ls ///显示根目录 -------要那5个守护进程启动起来哦----那个 / 是需要的哦
$>hadoop fs -ls /user/ubuntu/a//显示指定的目录
$>hadoop fs -ls -R///递归显示目录结构 ,目录,在namenode上,文件的话真正存储的地方还是在datanode上
$>hadoop fs -lsr///同上,不过不推荐使用了
hadoop fs -ls -R hdfs://localhost/ 最后有个/的哦,和上面一下看hadoop的文件系统
hadoop fs -ls -R file:/ 访问本地的文件系统
/tmp/hadoop-ubuntu/dfs/name/current 格式化的时候目录就已经创建了, name----对应的就就是名称节点 可以看cat VERSION
/tmp/hadoop-ubuntu/dfs/data/current 对应datanode 可以看cat VERSION /tmp/hadoop-ubuntu/dfs/data/current/BP-1334148266-127.0.1.1-1465945525779/current/finalized
8.查看帮助
$>hadoop fs//直接回车
$>hadoop fs -help put//查看put的具体信息
echo "hello world">>hello.txt 创一个文件放到hdfs文件上去
$>hadoop fs -put local.txt /user/ubuntu/xx.txthadoop fs -put hello.txt /user/ubuntu/ 第二个老师用的是//将本地文件put到hdfs文件系统。.
下载的话就把put改成get
这个是临时目录,第二次启动就是被干掉的,每次开机都要重新格式化的
cd /tmp/hadoop-ubuntu/dfs/data/current/BP-1334148266-127.0.1.1-1465945525779/current/finalized/subdir0/subdir0 后就有块blk_1073741825和元数据描述了blk_1073741825_1001.meta
9.查看namenode和datanode在本地
$>cd /tmp/ubuntu-hadoop/dfs/name/...
$>cd /tmp/ubuntu-hadoop/dfs/data/...
10.查看log文件----------这个才是最重要的,以后可能会出现很多错误,都在log里面找---出现错误时会提示让他哪个文件下找错误内容
$>${hadoop_home}/logs
11.也可以通过webui查看日志或者集群情况
http://localhost:50070///namenode web server port 查看namenode的日志 外面的要访问他http://192.168.2.112:50070 datanodes 加s就是数据节点集 用的是网络编程逃不了的
http://localhost:8088///resourceManager,看的是资源管理器的情况。只有在本机访问才可以。hadoop集群信息- 查出来前面4个0就可以其他地方输入ip端口访问。如果是127.0.0...绑定的就只能本机访问
mr作业提交的时候就是一个应用程序Applications,在这个端口里面看
http://localhost:19888///historyServer,历史服务器的情况
12.通过netstat查看网络端口占用情况
$>netstat -lupt//l:listener u:udp t:tcp p:program name 查出来前面4个0就可以其他地方输入ip端口访问。如果是127.0.0...绑定的就只能本机访问
文件有副本,目录没副本,一块是128m
有提到nat和桥接模式链接访问别人的hdfs问题,就提到一下005的35分钟左右几秒
搭建完全分布式hadoop集群------------------pdf第10章的内容 Setting Up a Hadoop Cluster
-------------------------
1.安装java
2.创建user
略
3.安装hadoop
略
4.配置SSH
略
5.格式化
略
6.启动进程
start-dfs.sh | start-yarn.sh
7.创建目录
8.配置hadoop
nat是自动分配ip的
a.克隆虚拟机4台
b.ssh,配ip麻烦,配主机名好一点1.克隆后改主机名称 su -------nano /etc/hostname 改完后重启
或su root ; echo "s200" > /etc/hostname------老师是分别登录每台机器里面去改的
2.传送ssh的免密公钥给其他主机,ip要看一下,貌似每次重启ip都会变
scp>
s200上的 ,authorized_keys是之前克隆其他机器的,处理一下 cat> 然后他又其他机器的那个目录里面的秘钥之类的都删除重写生成了
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
然后在s100上把公钥发给s200 scp> 追加公钥到对方的认证库中authorized_keys。还有ssh连上其他电脑 不需要sudo哦
到s200上 cat> 主机ssh其他机器的那个机器,配host映射 /etc/hosts -------------
192.168.238.128 s100 自己
192.168.238.129 s200其他机器
192.168.238.130 s300
192.168.238.131 s400 这个ip不一定对,看实际的ip
这台机器配好后,其他机器也要有相同的关系再把这个文件发给其他机器上去,远程复制
scp --help
切到root后,没试过是不是一定要这个
远程复制
scp root@s200:/etc/hosts root@s300:/etc/
scp hosts root@s300:/etc/
把远程机器的这个文件放到另外一台机器的etc下
c.配置hadoop配置文件
[core-site.xml]
fs.defaultFS
hdfs://namenode/ //本来是localhost---------现在是namenode,成ip或者主机名
[hdfs-site.xml]
dfs.replication=3
[mapred-site.xml]
mapreduce.framework.name=yarn
[yarn-site.xml]
yarn.resourcemanager.hostname=namenode
yarn.nodemanager.aux-services=mapreduce_shuffle
[slaves] 辅助,从属,主机列表,每个一行,-----------完全分布式下多了一个这个文件,也是在/soft/hadoop/etc/hadoop,伪分布里面有个数据节点以及节点管理器,由它决定。
保证ping主机名和pinglocalhost相同,用nat模式这个一般不会变
s200
s300
s400
[/etc/hosts]
d.远程复制/etc/hosts/到远程主机
$>scp hosts root@s200:/etc/
之前配置无秘登录时给ubuntu用户的,如果是复制hosts文件,ubuntu没有权限的,所以要手动输入对方主机的root密码,除非也给root也配置一个6
|
|