鍍金池/ 問答/人工智能  網(wǎng)絡(luò)安全/ 阿里云搭建hadoop chd,shell操作正常,使用java api操作出現(xiàn)

阿里云搭建hadoop chd,shell操作正常,使用java api操作出現(xiàn)異常

1、自己是初學(xué)hadoop,第一次使用hadoop-2.6.0-cdh5.7.0在阿里云上面進(jìn)行部署?;A(chǔ)的jdk環(huán)境沒有問題。因為只有一臺服務(wù)器,搭建的是偽分布式,修改的配置文件如下:
core-site.xml

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://desktop1:8020</value>
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/root/tmp</value>
</property>

hdfs-site.xml

<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>

slave

desktop1

其中對應(yīng)系統(tǒng)的hosts和hostname如下

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
172.31.207.xxx  desktop1
和
NETWORKING=yes
HOSTNAME=desktop1
NETWORKING_IPV6=no
PEERNTP=no

2、目前存在的問題:
自己通過ssh root@47.104.109.xxx 鏈接阿里云服務(wù)器[公網(wǎng)IP:47.104.109.xxx;私有IP:172.31.207.xxx],使用hdfs的shell命令[-ls -rm -put等等]都沒有問題,且在瀏覽器端訪問也是正??梢圆榭吹轿募摹綛lock information】
但是
自己通過本地的eclipse使用hdfs對應(yīng)的API操作出現(xiàn)問題

  1. 鏈接服務(wù)器是正常,無異常情況
  2. 使用java api 中 fileSystem.mkdirs 可以創(chuàng)建成功,在瀏覽器端也可以查看
  3. 但是創(chuàng)建[create]文件、copy[copyFromLocalFile]文件、查看[open]文件,都出現(xiàn)異?!綾ould only be replicated to 0 nodes instead of minReplication (=1). There are 1 datanode(s) running and 1 node(s) are excluded in this operation.】。
  4. 出現(xiàn)上述異常,自己也查找了很多資料。原來使用api操作默認(rèn)的【Replication】為3,然而自己搭建的只有一個,所以我在代碼中也添加了,雖然可以達(dá)到和用shell命令copy文件后的【Replication】變成了1【注:之前使用java api上傳文件可以成功,只是文件成功了,但是文件內(nèi)容0,而且Replication為3。更重要的一點是沒有Block information,只有下載鏈接】
onfiguration = new Configuration();
configuration.set("dfs.replication", "1");
fileSystem = FileSystem.get(new URI(HDFS_APTH), configuration, "root");

本人也是第一次使用hadoop,希望大家能夠給與提示和幫助,不勝感激。
附上java代碼

public class HdfsApp {
    public static final String HDFS_APTH = "hdfs://47.104.109.xxx8020/";
    FileSystem fileSystem = null;
    Configuration configuration = null;

    @Before
    public void setUp() throws Exception {
        System.out.println("HDFS coming");
        configuration = new Configuration();
        configuration.set("dfs.replication", "1");
        fileSystem = FileSystem.get(new URI(HDFS_APTH), configuration, "root");
    }
    
    //創(chuàng)建目錄正常
    @Test
    public void mkdirTest() throws Exception {
        fileSystem.mkdirs(new Path("/hdfs/dada"));
    }
    
    //copy本地到服務(wù)器異常
    @Test
    public void copyFromLocal() throws Exception {
        Path localPath = new Path("/Users/dada/Downloads/dada.jpg");
        Path hdfsPath = new Path("/");
        fileSystem.copyFromLocalFile(localPath, hdfsPath);
    }

    @After
    public void tearDown() throws Exception {
        System.out.println("HDFS leaving");
        configuration = null;
        fileSystem = null;
    }

}
異常信息
org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /dada.jpg could only be replicated to 0 nodes instead of minReplication (=1).  There are 1 datanode(s) running and 1 node(s) are excluded in this operation.
回答
編輯回答
尐飯團

樓主是看的慕課網(wǎng)的課程嗎,我也遇到了同樣的問題,怎么也解決不了

2017年10月12日 01:32
編輯回答
哎呦喂

樓主解決這個問題了嗎,我也遇到這個問題幾天了,怎么都無法解決,我是使用 IOUtils.copyBytes(in, outputStream, 4096, true);進(jìn)行文件的下載上傳,都失敗了。

2018年4月2日 12:08
編輯回答
青瓷

這個問題解決了嗎

2017年12月14日 07:13
編輯回答
不舍棄

問題已經(jīng)解決

2017年3月20日 08:59