hadoop 学习笔记

来源:互联网 发布:陕甘回乱 左中堂知乎 编辑:程序博客网 时间:2024/06/06 08:51

一、书上学习

1.hadoop下的文件操作命令
命令格式:hadoop fs -cmd <args>
如     目录创建:hadoop fs -mkdir /user/chen
        文件上传:hadoop fs -put filename.txt
    上传文件到hdfs:hadoop dfs -put filename newfilename    
    查看hdfs下的某个文件:hadoop dfs -cat 文件名
    将hdfs上的文件复制到本地系统:hadoop dfs -get 文件名 新文件名
    删除hdfs下文档:hadoop dfs -rmr 文件名
    清空回收站:hadoop fs -expunge
    更改文件副本系数:hadoop fs -setrep -w 3 -R path
    创建一个0字节的空文件:hadoop fs -touchz pathname

2.管理与更新
    hdfs基本统计信息:hadoop dfsadmin -report
    安全模式退出:hadoop dfsadmin -safemode leave
        进入:hadoop dfsadmin -safemode  enter
    负载均衡:start-balancer.sh




二、命令笔记

1.start-all.sh/stop-all.sh在/usr/local/hadoop/sbin下(因人而异)
2.其他系统配置文件在/usr/local/hadoop/etc/hadoop下(因人而异)
3.hadoop namenode -format格式化出错:
  解决:创建namenode和datanode对应的目录,分别在core-site.xml/core-site.xml 文件中,并更改文件操作权限    
    sudo chmod -R 775 you_datanode_path

    sudo chmod -R 755 you_namenode_path

4.执行start-all.sh时报错:
ssh  -o StrictHostKeyChecking=no  192.168.0.xxx

5.装完hadoop单机模式以后运行自带的wordcount频繁报错:
(1).org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /input/file1.txt._COPYING_ could only be replicated to 0 nodes instead of minReplication (=1).  There are 0 datanode(s) running and no node(s) are excluded in this operation.
    at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget4NewBlock(BlockManager.java:1550)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getNewBlockTargets(FSNamesystem.java:3110)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:3034)
    at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:723)
    at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.addBlock(ClientNamenodeProtocolServerSideTranslatorPB.java:492)

报错问题解析:命令行输入jps查看hadoop已启动的服务:
hadoop@localhost:/usr/local/hadoop/input$ jps
13001 Jps
12686 NodeManager
12551 ResourceManager
12386 SecondaryNameNode
12028 NameNode

只有五个,少了一个datanode

百度尝试单独启动datanode服务:
先进入执行目录下:
cd /usr/local/hadoop/sbin
再启动datanode服务:
hadoop-daemon.sh start datanode


执行以后再次执行jps,结果依旧是5个,没有datanode!!!


再次百度,找到一个问题:
datanode配置的目录hdfs-site.xml,里面有一段是指定datanode存放目录的,
  <property>
                <name>dfs.data.dir</name>
                <value>/home/hadoop/data</value>
        </property>

这部分必须指定,然后保存,退出
执行 chown -R hadoop:hadoop /usr/local/hadoop/hdfs/data

再次执行启动datanode的服务,成功!!!
这次启动了6个:
15606 Jps
14783 ResourceManager
14919 NodeManager
14256 NameNode
15528 DataNode
14617 SecondaryNameNode


然后执行编译命令,当然前提是要再hdfs服务器中创建了命令最后指定的两个目录:hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar  wordcount /input/ /output

创建目录命令:hadoop fs -mkdir /input
然后是向目录中传文件:hadoop fs -put /input/* /input
然后是浏览传上去的文件:hadoop fs -ls /input
如果目录建错了 就删除它:hadoop fs -mv -r /input

最后的运行:
 hdfs dfs -cat /output/*


0 0
原创粉丝点击