hadoop |
您所在的位置:网站首页 › 查看hadoop运行状态 › hadoop |
mapreduce.framework.name yarn
详细配置可参考: http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml。 8.10. 修改yarn-site.xml 对yarn-site.xml文件的修改,涉及下表中的属性: 属性名 属性值 涉及范围 yarn.resourcemanager.hostname 0.0.0.0 ResourceManager NodeManager HA模式可不配置,但由于其它配置项可能有引用它,建议保持值为0.0.0.0,如果没有被引用到,则可不配置。 yarn.nodemanager.hostname 0.0.0.0
yarn.nodemanager.aux-services mapreduce_shuffle
以下为HA相关的配置,包括自动切换(可仅可在ResourceManager节点上配置) yarn.resourcemanager.ha.enabled true 启用HA yarn.resourcemanager.cluster-id yarn-cluster 可不同于HDFS的 yarn.resourcemanager.ha.rm-ids rm1,rm2 注意NodeManager要和ResourceManager一样配置 yarn.resourcemanager.hostname.rm1 hadoop1
yarn.resourcemanager.hostname.rm2 hadoop2
yarn.resourcemanager.webapp.address.rm1 hadoop1:8088 在浏览器上访问:http://hadoop1:8088,可以看到yarn的信息 yarn.resourcemanager.webapp.address.rm2 hadoop2:8088 在浏览器上访问:http://hadoop2:8088,可以看到yarn的信息 yarn.resourcemanager.zk-address hadoop11:2181,hadoop12:2182,hadoop13:2181
yarn.resourcemanager.ha.automatic-failover.enable true 可不配置,因为当yarn.resourcemanager.ha.enabled为true时,它的默认值即为true 以下为NodeManager配置 yarn.nodemanager.vmem-pmem-ratio
每使用1MB物理内存,最多可用的虚拟内存数,默认值为2.1,在运行spark-sql时如果遇到“Yarn application has already exited with state FINISHED”,则应当检查NodeManager的日志,以查看是否该配置偏小原因 yarn.nodemanager.resource.cpu-vcores
NodeManager总的可用虚拟CPU个数,默认值为8 yarn.nodemanager.resource.memory-mb
该节点上YARN可使用的物理内存总量,默认是8192(MB) yarn.nodemanager.pmem-check-enabled
是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true yarn.nodemanager.vmem-check-enabled
是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true 以下为ResourceManager配置 yarn.scheduler.minimum-allocation-mb
单个容器可申请的最小内存 yarn.scheduler.maximum-allocation-mb
单个容器可申请的最大内存
实际部署的时候一个参考配置:
yarn.resourcemanager.ha.enabled true
yarn.resourcemanager.cluster-id yarn-cluster
yarn.resourcemanager.ha.rm-ids rm1,rm2
yarn.resourcemanager.hostname.rm1 hadoop1
yarn.resourcemanager.hostname.rm2 hadoop2
yarn.resourcemanager.webapp.address.rm1 hadoop1:8088
yarn.resourcemanager.webapp.address.rm2 hadoop2:8088
yarn.resourcemanager.zk-address hadoop11:2181,hadoop12:2182,hadoop13:2181
yarn.nodemanager.aux-services mapreduce_shuffle
yarn.nodemanager.hostname如果配置成具体的IP,则会导致每个NodeManager的配置不同。详细配置可参考: http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-common/yarn-default.xml。 Yarn HA的配置可以参考: https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/ResourceManagerHA.html。
在hadoop1上配置完成后执行:
scp -r /home/toto/software/hadoop-2.8.0/etc/hadoop/* root@hadoop2:/home/tuzq/software/hadoop-2.8.0/etc/hadoop scp -r /home/toto/software/hadoop-2.8.0/etc/hadoop/* root@hadoop3:/home/tuzq/software/hadoop-2.8.0/etc/hadoop scp -r /home/toto/software/hadoop-2.8.0/etc/hadoop/* root@hadoop4:/home/tuzq/software/hadoop-2.8.0/etc/hadoop scp -r /home/toto/software/hadoop-2.8.0/etc/hadoop/* root@hadoop5:/home/tuzq/software/hadoop-2.8.0/etc/hadoop
9. 启动顺序 Zookeeper -> JournalNode -> 格式化NameNode -> 初始化JournalNode -> 创建命名空间(zkfc) -> NameNode -> DataNode -> ResourceManager -> NodeManager。 但请注意首次启动NameNode之前,得先做format,也请注意备NameNode的启动方法。 10. 启动HDFS 在启动HDFS之前,需要先完成对NameNode的格式化。 10.1. 创建好目录 mkdir -p /home/tuzq/software/hadoop-2.8.0/tmp/dfs/name 10.2. 启动好zookeeper ./zkServer.sh start 注意在启动其它之前先启动zookeeper。 10.3. 创建命名空间 在其中一个namenode(hadoop1)上执行: cd $HADOOP_HOME bin/hdfs zkfc -formatZK (第二次不用执行了)
10.4. 启动所有JournalNode(hadoop1,hadoop2,hadoop3上执行) NameNode将元数据操作日志记录在JournalNode上,主备NameNode通过记录在JouralNode上的日志完成元数据同步。
在所有JournalNode上执行: cd $HADOOP_HOME sbin/hadoop-daemon.sh start journalnode 执行完成之后执行下面的命令进行查看: [root@hadoop2 hadoop-2.8.0]# jps3314 Jps3267 JournalNode[root@hadoop2 hadoop-2.8.0]#
注意,在执行“hdfs namenode -format”之前,必须先启动好JournalNode,而format又必须在启动namenode之前。
10.5初始化namenode 进入hadoop1接着执行下面的命令(初始化namenode,如果之前已经初始化过了,此时不需要再次重新初始化namenode): hdfs namenode -format (第二次不用执行了)
10.6.初始化JournalNode 如果是非HA转HA才需要这一步,在其中一个JournalNode(在hadoop1)上执行: bin/hdfs namenode -initializeSharedEdits (第二次不用执行了): 此命令默认是交互式的,加上参数-force转成非交互式。
在所有JournalNode创建如下目录(第二次不用执行了): mkdir -p /home/tuzq/software/hadoop-2.8.0/journal/mycluster/current 10.7. 启动主NameNode 下面进入的是hadoop1这台机器。关于启动hadoop2上的namenode在下面的博文中有介绍。 1) 进入$HADOOP_HOME目录 2) 启动主NameNode: sbin/hadoop-daemon.sh start namenode
启动时,遇到如下所示的错误,则表示NameNode不能免密码登录自己。如果之前使用IP可以免密码登录自己,则原因一般是因为没有使用主机名登录过自己,因此解决办法是使用主机名SSH一下 10.8. 启动备NameNode 进入hadoop2,执行以下命令 bin/hdfs namenode -bootstrapStandby 出现:Re-format的都选择N sbin/hadoop-daemon.sh start namenode
如果没有执行第1步,直接启动会遇到如下错误: No valid image files found 或者在该NameNode日志会发现如下错误: 2016-04-08 14:08:39,745 WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Encountered exception loading fsimage java.io.IOException: NameNode is not formatted. 10.9. 启动主备切换进程 在所有NameNode(即hadoop1和hadoop2上都执行命令)上启动主备切换进程: sbin/hadoop-daemon.sh start zkfc 只有启动了DFSZKFailoverController进程,HDFS才能自动切换主备。
注:zkfc是zookeeper failover controller的缩写。 10.10. 启动所有DataNode 在各个DataNode上分别执行(即hadoop3,hadoop4,hadoop5上): sbin/hadoop-daemon.sh start datanode
如果有发现DataNode进程并没有起来,可以试试删除logs目录下的DataNode日志,再得启看看。 10.11. 检查启动是否成功 1) 使用JDK提供的jps命令,查看相应的进程是否已启动 2) 检查$HADOOP_HOME/logs目录下的log和out文件,看看是否有异常信息。
启动后nn1和nn2都处于备机状态,将nn1切换为主机(下面的命令在hadoop1上执行): bin/hdfs haadmin -transitionToActive nn1
10.11.1. DataNode 执行jps命令(注:jps是jdk中的一个命令,不是jre中的命令),可看到DataNode进程: $ jps 18669 DataNode 24542 Jps 10.11.2. NameNode 执行jps命令,可看到NameNode进程: $ jps 18669 NameNode 24542 Jps 10.12. 执行HDFS命令 执行HDFS命令,以进一步检验是否已经安装成功和配置好。关于HDFS命令的用法,直接运行命令hdfs或hdfs dfs,即可看到相关的用法说明。 10.12.1. 查看DataNode是否正常启动 hdfs dfsadmin -report
注意如果core-site.xml中的配置项fs.default.name的值为file:///,则会报: report: FileSystem file:/// is not an HDFS file system Usage: hdfs dfsadmin [-report] [-live] [-dead] [-decommissioning]
解决这个问题,只需要将fs.default.name的值设置为和fs.defaultFS相同的值。 10.12.2启动hdfs和yarn(在hadoop1,hadoop2上分别执行) 进入hadoop1机器,执行命令: [root@hadoop1sbin]# sbin/start-dfs.sh cd $HADOOP_HOME # sbin/start-yarn.sh (注意:hadoop1和hadoop2都启动)
在浏览器上访问:http://hadoop1:50070/,界面如下: 上面显示的是主的,是active状态。
再在浏览器上访问:http://hadoop2:50070/ 通过上面,发现hadoop2是一种备用状态。
访问yarn(访问地址可以在yarn-site.xml中查找到),访问之后的效果如下http://hadoop1:8088/cluster:
10.12.2. 查看NameNode的主备状态 如查看NameNode1和NameNode2分别是主还是备: $ hdfs haadmin -getServiceState nn1 standby $ hdfs haadmin -getServiceState nn2 active
10.12.3. hdfs dfs ls 注意:下面的命令只有在启动了yarn之后才会可用
“hdfs dfs -ls”带一个参数,如果参数以“hdfs://URI”打头表示访问HDFS,否则相当于ls。其中URI为NameNode的IP或主机名,可以包含端口号,即hdfs-site.xml中“dfs.namenode.rpc-address”指定的值。 “hdfs dfs -ls”要求默认端口为8020,如果配置成9000,则需要指定端口号,否则不用指定端口,这一点类似于浏览器访问一个URL。示例: > hdfs dfs -ls hdfs://hadoop1:8020/
8020后面的斜杠/是和必须的,否则被当作文件。如果不指定端口号8020,则使用默认的8020,“hadoop1:8020”由hdfs-site.xml中“dfs.namenode.rpc-address”指定。 不难看出“hdfs dfs -ls”可以操作不同的HDFS集群,只需要指定不同的URI。
如果想通过hdfs协议查看文件列表或者文件,可以使用如下方式:
文件上传后,被存储在DataNode的data目录下(由DataNode的hdfs-site.xml中的属性“dfs.datanode.data.dir”指定), 如:$HADOOP_HOME/data/data/current/BP-472842913-192.168.106.91-1497065109036/current/finalized/subdir0/subdir0/blk_1073741825 文件名中的“blk”是block,即块的意思,默认情况下blk_1073741825即为文件的一个完整块,Hadoop未对它进额外处理。 10.12.4. hdfs dfs -put 上传文件命令,示例: > hdfs dfs -put /etc/SuSE-release hdfs://192.168.106.91/ 10.12.5. hdfs dfs -rm 删除文件命令,示例: > hdfs dfs -rm hdfs://192.168.106.91/SuSE-release Deleted hdfs://192.168.106.91/SuSE-release 10.12.6. 新NameNode如何加入? 当有NameNode机器损坏时,必然存在新NameNode来替代。把配置修改成指向新NameNode,然后以备机形式启动新NameNode,这样新的NameNode即加入到Cluster中: 1) bin/hdfs namenode -bootstrapStandby 2) sbin/hadoop-daemon.sh start namenode
10.12.7. HDFS只允许有一主一备两个NameNode 如果试图配置三个NameNode,如: dfs.ha.namenodes.test nm1,nm2,nm3
The prefix for a given nameservice, contains a comma-separated list of namenodes for a given nameservice (eg EXAMPLENAMESERVICE).
则运行“hdfs namenode -bootstrapStandby”时会报如下错误,表示在同一NameSpace内不能超过2个NameNode: 16/04/11 09:51:57 ERROR namenode.NameNode: Failed to start namenode. java.io.IOException: java.lang.IllegalArgumentException: Expected exactly 2 NameNodes in namespace 'test'. Instead, got only 3 (NN ids were 'nm1','nm2','nm3' at org.apache.hadoop.hdfs.server.namenode.ha.BootstrapStandby.run(BootstrapStandby.java:425) at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1454) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1554) Caused by: java.lang.IllegalArgumentException: Expected exactly 2 NameNodes in namespace 'test'. Instead, got only 3 (NN ids were 'nm1','nm2','nm3' at com.google.common.base.Preconditions.checkArgument(Preconditions.java:115) 10.12.8. 存储均衡start-balancer.sh 示例:start-balancer.sh –t 10% 10%表示机器与机器之间磁盘使用率偏差小于10%时认为均衡,否则做均衡搬动。“start-balancer.sh”调用“hdfs start balancer”来做均衡,可以调用stop-balancer.sh停止均衡。
均衡过程非常慢,但是均衡过程中,仍能够正常访问HDFS,包括往HDFS上传文件。 [VM2016@hadoop-030 /data4/hadoop/sbin]$ hdfs balancer # 可以改为调用start-balancer.sh 16/04/08 14:26:55 INFO balancer.Balancer: namenodes = [hdfs://test] // test为HDFS的cluster名 16/04/08 14:26:55 INFO balancer.Balancer: parameters = Balancer.Parameters[BalancingPolicy.Node, threshold=10.0, max idle iteration = 5, number of nodes to be excluded = 0, number of nodes to be included = 0] Time Stamp Iteration# Bytes Already Moved Bytes Left To Move Bytes Being Moved 16/04/08 14:26:56 INFO net.NetworkTopology: Adding a new node: /default-rack/192.168.1.231:50010 16/04/08 14:26:56 INFO net.NetworkTopology: Adding a new node: /default-rack/192.168.1.229:50010 16/04/08 14:26:56 INFO net.NetworkTopology: Adding a new node: /default-rack/192.168.1.213:50010 16/04/08 14:26:56 INFO net.NetworkTopology: Adding a new node: /default-rack/192.168.1.208:50010 16/04/08 14:26:56 INFO net.NetworkTopology: Adding a new node: /default-rack/192.168.1.232:50010 16/04/08 14:26:56 INFO net.NetworkTopology: Adding a new node: /default-rack/192.168.1.207:50010 16/04/08 14:26:56 INFO balancer.Balancer: 5 over-utilized: [192.168.1.231:50010:DISK, 192.168.1.229:50010:DISK, 192.168.1.213:50010:DISK, 192.168.1.208:50010:DISK, 192.168.1.232:50010:DISK] 16/04/08 14:26:56 INFO balancer.Balancer: 1 underutilized(未充分利用的): [192.168.1.207:50010:DISK] # 数据将移向该节点 16/04/08 14:26:56 INFO balancer.Balancer: Need to move 816.01 GB to make the cluster balanced. # 需要移动816.01G数据达到平衡 16/04/08 14:26:56 INFO balancer.Balancer: Decided to move 10 GB bytes from 192.168.1.231:50010:DISK to 192.168.1.207:50010:DISK # 从192.168.1.231移动10G数据到192.168.1.207 16/04/08 14:26:56 INFO balancer.Balancer: Will move 10 GB in this iteration
16/04/08 14:32:58 INFO balancer.Dispatcher: Successfully moved blk_1073749366_8542 with size=77829046 from 192.168.1.231:50010:DISK to 192.168.1.207:50010:DISK through 192.168.1.213:50010 16/04/08 14:32:59 INFO balancer.Dispatcher: Successfully moved blk_1073749386_8562 with size=77829046 from 192.168.1.231:50010:DISK to 192.168.1.207:50010:DISK through 192.168.1.231:50010 16/04/08 14:33:34 INFO balancer.Dispatcher: Successfully moved blk_1073749378_8554 with size=77829046 from 192.168.1.231:50010:DISK to 192.168.1.207:50010:DISK through 192.168.1.231:50010 16/04/08 14:34:38 INFO balancer.Dispatcher: Successfully moved blk_1073749371_8547 with size=134217728 from 192.168.1.231:50010:DISK to 192.168.1.207:50010:DISK through 192.168.1.213:50010 16/04/08 14:34:54 INFO balancer.Dispatcher: Successfully moved blk_1073749395_8571 with size=134217728 from 192.168.1.231:50010:DISK to 192.168.1.207:50010:DISK through 192.168.1.231:50010 Apr 8, 2016 2:35:01 PM 0 478.67 MB 816.01 GB 10 GB 16/04/08 14:35:10 INFO net.NetworkTopology: Adding a new node: /default-rack/192.168.1.213:50010 16/04/08 14:35:10 INFO net.NetworkTopology: Adding a new node: /default-rack/192.168.1.229:50010 16/04/08 14:35:10 INFO net.NetworkTopology: Adding a new node: /default-rack/192.168.1.232:50010 16/04/08 14:35:10 INFO net.NetworkTopology: Adding a new node: /default-rack/192.168.1.231:50010 16/04/08 14:35:10 INFO net.NetworkTopology: Adding a new node: /default-rack/192.168.1.208:50010 16/04/08 14:35:10 INFO net.NetworkTopology: Adding a new node: /default-rack/192.168.1.207:50010 16/04/08 14:35:10 INFO balancer.Balancer: 5 over-utilized: [192.168.1.213:50010:DISK, 192.168.1.229:50010:DISK, 192.168.1.232:50010:DISK, 192.168.1.231:50010:DISK, 192.168.1.208:50010:DISK] 16/04/08 14:35:10 INFO balancer.Balancer: 1 underutilized(未充分利用的): [192.168.1.207:50010:DISK] 16/04/08 14:35:10 INFO balancer.Balancer: Need to move 815.45 GB to make the cluster balanced. 16/04/08 14:35:10 INFO balancer.Balancer: Decided to move 10 GB bytes from 192.168.1.213:50010:DISK to 192.168.1.207:50010:DISK 16/04/08 14:35:10 INFO balancer.Balancer: Will move 10 GB in this iteration
16/04/08 14:41:18 INFO balancer.Dispatcher: Successfully moved blk_1073760371_19547 with size=77829046 from 192.168.1.213:50010:DISK to 192.168.1.207:50010:DISK through 192.168.1.213:50010 16/04/08 14:41:19 INFO balancer.Dispatcher: Successfully moved blk_1073760385_19561 with size=77829046 from 192.168.1.213:50010:DISK to 192.168.1.207:50010:DISK through 192.168.1.213:50010 16/04/08 14:41:22 INFO balancer.Dispatcher: Successfully moved blk_1073760393_19569 with size=77829046 from 192.168.1.213:50010:DISK to 192.168.1.207:50010:DISK through 192.168.1.213:50010 16/04/08 14:41:23 INFO balancer.Dispatcher: Successfully moved blk_1073760363_19539 with size=77829046 from 192.168.1.213:50010:DISK to 192.168.1.207:50010:DISK through 192.168.1.213:50010 10.12.9. 新增JournalNode 找一台已有JournalNode节点,修改它的hdfs-site.xml,将新增的Journal包含进来,如在 qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/mycluster
的基础上新增hadoop6和hadoop7两个JournalNode: qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485;hadoop6:8485;hadoop7:8485/mycluster
然后将安装目录和数据目录(hdfs-site.xml中的dfs.journalnode.edits.dir指定的目录)都复制到新的节点。 如果不复制JournalNode的数据目录,则新节点上的JournalNode会报错“Journal Storage Directory /data/journal/test not formatted”,将来的版本可能会实现自动同步。 接下来,就可以在新节点上启动好JournalNode(不需要做什么初始化),并重启下NameNode。注意观察JournalNode日志,查看是否启动成功,当日志显示为以下这样的INFO级别日志则表示启动成功: 2016-04-26 10:31:11,160 INFO org.apache.hadoop.hdfs.server.namenode.FileJournalManager: Finalizing edits file /data/journal/test/current/edits_inprogress_0000000000000194269 -> /data/journal/test/current/edits_0000000000000194269-0000000000000194270 11. 启动YARN 11.1. 启动YARN 1) 进入$HADOOP_HOME/sbin目录 2) 在主备两台都执行:start-yarn.sh,即开始启动YARN
若启动成功,则在Master节点执行jps,可以看到ResourceManager: > jps 24689 NameNode 30156 Jps 28861 ResourceManager
在Slaves节点执行jps,可以看到NodeManager: $ jps 14019 NodeManager 23257 DataNode 15115 Jps
如果只需要单独启动指定节点上的ResourceManager,这样: sbin/yarn-daemon.sh start resourcemanager
对于NodeManager,则是这样: sbin/yarn-daemon.sh start nodemanager 11.2. 执行YARN命令 11.2.1. yarn node -list 列举YARN集群中的所有NodeManager,如(注意参数间的空格,直接执行yarn可以看到使用帮助): [root@hadoop1sbin]# yarn node –list
11.2.2. yarn node -status 查看指定NodeManager的状态(通过上面查出来的结果进行查询),如: [root@hadoop1 hadoop]# yarn node -status hadoop5:59894 Node Report : Node-Id : hadoop5:59894 Rack : /default-rack Node-State : RUNNING Node-Http-Address : hadoop5:8042 Last-Health-Update : 星期六 10/六月/17 12:30:38:20CST Health-Report : Containers : 0 Memory-Used : 0MB Memory-Capacity : 8192MB CPU-Used : 0 vcores CPU-Capacity : 8 vcores Node-Labels : Resource Utilization by Node : PMem:733 MB, VMem:733 MB, VCores:0.0 Resource Utilization by Containers : PMem:0 MB, VMem:0 MB, VCores:0.0
[root@hadoop1 hadoop]# 11.2.3. yarn rmadmin -getServiceState rm1 查看rm1的主备状态,即查看它是主(active)还是备(standby)。
11.2.4. yarn rmadmin -transitionToStandby rm1 将rm1从主切为备。 更多的yarn命令可以参考: https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YarnCommands.html。 12. 运行MapReduce程序 在安装目录的share/hadoop/mapreduce子目录下,有现存的示例程序: hadoop@VM-40-171-sles10-64:~/hadoop> ls share/hadoop/mapreduce hadoop-mapreduce-client-app-2.7.2.jar hadoop-mapreduce-client-jobclient-2.7.2-tests.jar hadoop-mapreduce-client-common-2.7.2.jar hadoop-mapreduce-client-shuffle-2.7.2.jar hadoop-mapreduce-client-core-2.7.2.jar hadoop-mapreduce-examples-2.7.2.jar hadoop-mapreduce-client-hs-2.7.2.jar lib hadoop-mapreduce-client-hs-plugins-2.7.2.jar lib-examples hadoop-mapreduce-client-jobclient-2.7.2.jar sources
跑一个示例程序试试: hdfs dfs -put /etc/hosts hdfs://test/in/ hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount hdfs://test/in/ hdfs://test/out/
运行过程中,使用java的jps命令,可以看到yarn启动了名为YarnChild的进程。 wordcount运行完成后,结果会保存在out目录下,保存结果的文件名类似于“part-r-00000”。另外,跑这个示例程序有两个需求注意的点: 1) in目录下要有文本文件,或in即为被统计的文本文件,可以为HDFS上的文件或目录,也可以为本地文件或目录 2) out目录不能存在,程序会自动去创建它,如果已经存在则会报错。
包hadoop-mapreduce-examples-2.7.2.jar中含有多个示例程序,不带参数运行,即可看到用法: > hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount Usage: wordcount
> hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar An example program must be given as the first argument. Valid program names are: aggregatewordcount: An Aggregate based map/reduce program that counts the words in the input files. aggregatewordhist: An Aggregate based map/reduce program that computes the histogram of the words in the input files. bbp: A map/reduce program that uses Bailey-Borwein-Plouffe to compute exact digits of Pi. dbcount: An example job that count the pageview counts from a database. distbbp: A map/reduce program that uses a BBP-type formula to compute exact bits of Pi. grep: A map/reduce program that counts the matches of a regex in the input. join: A job that effects a join over sorted, equally partitioned datasets multifilewc: A job that counts words from several files. pentomino: A map/reduce tile laying program to find solutions to pentomino problems. pi: A map/reduce program that estimates Pi using a quasi-Monte Carlo method. randomtextwriter: A map/reduce program that writes 10GB of random textual data per node. randomwriter: A map/reduce program that writes 10GB of random data per node. secondarysort: An example defining a secondary sort to the reduce. sort: A map/reduce program that sorts the data written by the random writer. sudoku: A sudoku solver. teragen: Generate data for the terasort terasort: Run the terasort teravalidate: Checking results of terasort wordcount: A map/reduce program that counts the words in the input files. wordmean: A map/reduce program that counts the average length of the words in the input files. wordmedian: A map/reduce program that counts the median length of the words in the input files. wordstandarddeviation: A map/reduce program that counts the standard deviation of the length of the words in the input files.
修改日志级别为DEBBUG,并打屏: export HADOOP_ROOT_LOGGER=DEBUG,console
13. HDFS权限配置 13.1. hdfs-site.xml dfs.permissions.enabled = true dfs.permissions.superusergroup = supergroup dfs.cluster.administrators = ACL-for-admins dfs.namenode.acls.enabled = true dfs.web.ugi = webuser,webgroup 13.2. core-site.xml fs.permissions.umask-mode = 022 hadoop.security.authentication = simple 安全验证规则,可为simple或kerberos 14. C++客户端编程 14.1. 示例代码 // g++ -g -o x x.cpp -L$JAVA_HOME/lib/amd64/jli -ljli -L$JAVA_HOME/jre/lib/amd64/server -ljvm -I$HADOOP_HOME/include $HADOOP_HOME/lib/native/libhdfs.a -lpthread -ldl #include "hdfs.h" #include #include #include
int main(int argc, char **argv) { #if 0 hdfsFS fs = hdfsConnect("default", 0); // HA方式 const char* writePath = "hdfs://mycluster/tmp/testfile.txt"; hdfsFile writeFile = hdfsOpenFile(fs, writePath, O_WRONLY |O_CREAT, 0, 0, 0); if(!writeFile) { fprintf(stderr, "Failed to open %s for writing!\n", writePath); exit(-1); } const char* buffer = "Hello, World!\n"; tSize num_written_bytes = hdfsWrite(fs, writeFile, (void*)buffer, strlen(buffer)+1); if (hdfsFlush(fs, writeFile)) { fprintf(stderr, "Failed to 'flush' %s\n", writePath); exit(-1); } hdfsCloseFile(fs, writeFile); #else struct hdfsBuilder* bld = hdfsNewBuilder(); hdfsBuilderSetNameNode(bld, "default"); // HA方式 hdfsFS fs = hdfsBuilderConnect(bld); if (NULL == fs) { fprintf(stderr, "Failed to connect hdfs\n"); exit(-1); } int num_entries = 0; hdfsFileInfo* entries; if (argc |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |