怎样将数据移入和移出Hadoop?
Hadoop -put呼吁的举动与Linux中的Linux cp呼吁差异,假如方针已存在,则会被包围; 在Hadoop中,副本失败并表现错误:
必需添加-f选项以逼迫包围文件:
与Linux cp呼吁很是相似,可以行使沟通的呼吁复制多个文件。在这种环境下,最后一个参数必需是HDFS中复制当地文件的目次:
可以行使Linux管道将呼吁输出转达到HDFS文件——行使沟通的-put呼吁并在厥后添加单独的连字符,这汇报Hadoop从尺度输入读取:
要测试文件或目次是否存在,请行使-test呼吁和-e或-d选项别离测试文件或目次是否存在。假如文件或目次存在,则呼吁的代码为0;假如不存在,则为1:
假如只想在HDFS中“touch”文件(建设一个新的空文件),那么touchz选项可以完成该事变: ![]() ![]() CLI专为交互式HDFS勾当而计划,它也可以归并到剧本中,以用于自动执行某些使命。CLI的弱点是级别较低,而且没有内置任何自动化机制。它必要为每个呼吁分派一个fork,假如在bash剧本中行使也许没题目,但假如试图将HDFS成果集成到Python或Java应用措施中,也许就会呈现题目。在这种环境下,为每个呼吁启动外部历程的开销也许也是想要停止的。 行使REST加载文件 CLI便于快速运行呼吁和编写剧本。可是,它会发生为每个呼吁分派一个单独历程的开销,这也许是想要停止的,出格是编程说话与HDFS毗连时。 题目 没有HDFS本机接口的编程说话怎样与HDFS交互。 办理方案 行使Hadoop的WebHDFS接口,该接口为HDFS操纵提供全成果的REST API。 接头 在开始之前,必要确保在集群上启用WebHDFS(默认不启动),这由dfs.webhdfs.enabled属性节制。假如未启用,则必要更新hdfs-site.xml并添加以下内容: ![]() 在这种技能中,我们将先容在不安详的Hadoop集群上运行WebHDFS.3的环境。假如正在行使安详的Hadoop集群,则不会提供user.name参数。 相反,我们将在与WebHDFS交互之前行使kinit对Kerberos举办身份验证,然后在curl呼吁行中提供-negotiate -u:youruser。 告诫:假如为已经封锁了安详性的集群启用WebHDFS,则可以轻松地将其用作集群中恣意用户呼吁(只需将URL中的用户名变动为簇)。提议仅在打开安详性的环境下运行WebHDFS。 要想在此技能中行使HTTP与NameNode举办通讯,必要知道运行NameNode RPC处事的主机和端口,这是行使dfs.namenode.http-address属性设置的。在伪漫衍式配置中,这很也许配置为0.0.0.0:50070。我们假设别的技能的伪漫衍式——替代恰当的主机和端口举办配置。 起首行使CLI在HDFS中建设文件:
行使WebHDFS获取有关该文件的各类风趣的元数据(用户名替代为以下URL中的aholmes): ![]() 呼吁语法由两部门构成:一是路径;二是正在执行的操纵。可是,必要提供执行操纵的用户名,不然HDFS将假定你是一个会见受限的匿名用户。 ![]() 图5.1 理会WebHDFS URL路径 从HDFS读取文件只需将OPEN指定为operation: ![]() 行使WebHDFS编写文件分为两步:第一步关照NameNode建设新文件的意图,可以行使HTTP PUT呼吁执行此操纵: ![]() (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |