hadoop学习笔记-持续更新

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38500014/article/details/79174401
hadoop学习    
25
cyg_server 用户名
net start Sshd 开启ssh服务
ssh localhost 连接本机

快速切换到bin目录:cd /cygdrive/d/软件和资料/hadoop/hadoop-0.18.2/bin
开启hadoop服务:./start-all.sh
Hadoop是一个开源的框架,利用集群的威力高速运算和存储,可编写和运行分布式应用处理大规模数据,是专为离线和大规模数据分析而设计的。
hadoop中的四大框架:hdfs、mapreduce、hive、hbase
Hadoop=HDFS(分布式数据存储)+Mapreduce(分布式数据计算),Hadoop的数据来源可以是任何形式,在处理半结构化和非结构化数据上与关系型数据库相比有更好的性能,具有更灵活的处理能力,不管任何数据形式最终会转化为key/value,key/value是基本数据单元。用函数式变成Mapreduce代替SQL,SQL是查询语句,而Mapreduce则是使用脚本和代码,而对于适用于关系型数据库,习惯SQL的Hadoop有开源工具hive代替。
hive能进行日志分析

一个HDFS集群由一个Namenode和一定数目的Datanodes组成。
Namenode:是一个中心服务器,负责文件系统的命名空间和客户端对文件的访问,能执行文件或目录的打开,关闭,重命名,也负责确定数据快到具体的Datanodes节点的映射。

Secondnamenode:用来保存对HDFS信息的备份,并减少namenode重启的时间。

Datanode:集群中一般是一个节点一个,负责他所在节点的存储。
Jobtracker:是MapReduce框架中的只要类,所有的job都需要它来调度,负责调度job的子任务task运行于slaver上面且监控如果发现失败的task则重新运行,slaver 则负责直接执行每一个task,而且hadoop中只配置一个Jobtracker应用。

Tasktracher:都需要运行在DataNode上,而JobTracker则不需要,一般情况应该把Jobtracker部署在单独的机器上。

master:提供Namenode,Secondnamenode,Jobtracker服务。
slaver:提供Datanode,Tasktracher服务。

通常是一个master服务Jobtracker和多个slaver服务Tasktracher提供服务调度。
集群里的一台机器被指定为NameNode,另一台不同的机器被指定为JobTracker。这些机器是masters。余下的机器即作为DataNode也作为TaskTracker。这些机器是slaves
hadoop的优点:
1.扩容能力强:能存储和处理千兆字节数据
2.成本低:可以通过普通机器组成的服务器群来分发以及处理数据,这些服务集群总计可达到数千个节点。
3.高效率:通过分发数据,hadoop可以再数据所在的节点上并行的处理他们,处理非常快速。
4.可靠性:hadoop能自动的维护数据的多份复制,并且在任务失败后能自动的重新部署计算任务。

经验总结:
1>master和slave上的几个conf配置文件不需要全部同步,如果确定都是通过master去启动和关闭,那么slave机器上的配置不需要去维护,但是如果希望在任意一台机器上都可以启动和关闭hadoop,那么就需要全部保持一致了

2>master和slave机器上的/etc/hosts中必须把集群中机器都配置上去,就算在各个配置文件中使用的是ip,原来以为如果配成ip就不需要去配置host,结果发现在执行reduce的时候总是卡住,在拷贝的时候就无法继续下去,不断充实,另外如果集群中如果有两台机器的机器名如果重复也会出现问题

3>如果在新增了节点或者删除节点的时候出现了问题,首先就去删除slave的hadoop.tmp.dir,然后重新启动试试看,如果还是不行那就干脆把master的hadoop.tmp.dir删除,意味着dfs上的数据也会丢失,如果删除了master的hadoop.tmp.dir,那么就需要重新namenode -format

4>map任务个数以及reduce任务个数配置,前面分布式系统设计提到一个文件放入到分布式文件系统中,会被分割成多个blick放置到每一个datanode上,默认dfs.block.size应该是64M,也就是说如果你放置到HDFS上的数据小于64,那么将只有一个block,此时会被放置到某一个datanode中,这个可以通过使用命令:hadoop dfsadmin -report 就可以看到各个节点存储的情况,也可以直接去某一个datanode查看目录:hadoop.tmp.dir/dfs/data/current 就可以看到哪些block了,block的数量将直接影响到map的个数,当然可以通过配置设定map和reduce的任务个数,map的个数通常默认和HDFS需要处理的blocks相同,也可以通过配置map的数量或者配置minimum split size来设定,实际的个数为:max(min(block_size,data/#maps),min_split_size).

猜你喜欢

转载自blog.csdn.net/weixin_38500014/article/details/79174401