直接連接遇到的問題
直接運行下面的代碼,會出現(xiàn)權(quán)限不夠的問題
@Test
public void test1() throws Exception{
//指定NameNode地址
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://192.168.157.111:9000");
//創(chuàng)建一個HDFS的客戶端 DistributedFileSystem
FileSystem client = FileSystem.get(conf);
//創(chuàng)建目錄
client.mkdirs(new Path("/folder1"));
//關(guān)閉客戶端
client.close();
}
錯誤:
org.apache.hadoop.security.AccessControlException: Permission denied: user=lenovo, access=WRITE, inode=“/folder1”:root:supergroup:drwxr-xr-x
下面使用四種方式來解決權(quán)限不夠的問題。
設(shè)置執(zhí)行的用戶為root用戶
環(huán)境變量 :HADOOP_USER_NAME
@Test
public void test3() throws Exception{
System.setProperty("HADOOP_USER_NAME", "root");
//指定NameNode地址
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://192.168.157.111:9000");
//創(chuàng)建一個HDFS的客戶端 DistributedFileSystem
FileSystem client = FileSystem.get(conf);
//創(chuàng)建目錄
client.mkdirs(new Path("/folder1"));
//關(guān)閉客戶端
client.close();
}
使用Java的-D參數(shù)來設(shè)置環(huán)境變量
@Test
public void test2() throws Exception{
//指定NameNode地址
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://192.168.157.111:9000");
//創(chuàng)建一個HDFS的客戶端 DistributedFileSystem
FileSystem client = FileSystem.get(conf);
//創(chuàng)建目錄
client.mkdirs(new Path("/folder1"));
//關(guān)閉客戶端
client.close();
}
根據(jù)下面的步驟使用Java的-D參數(shù)
使用chmod的命令賦予權(quán)限
在linux上, 執(zhí)行 hdfs dfs -chmod 777 /folder2
將讀寫執(zhí)行的權(quán)限都給到/folder2
@Test
public void test4() throws Exception{
//指定NameNode地址
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://192.168.157.111:9000");
//創(chuàng)建一個HDFS的客戶端 DistributedFileSystem
FileSystem client = FileSystem.get(conf);
//創(chuàng)建目錄
client.mkdirs(new Path("/folder2/folder3"));
//關(guān)閉客戶端
client.close();
}
修改參數(shù)配置
先停止HDFS
進入HADOOP_HOME/etc/hadoop路徑,編輯hdfs-site.xml文件
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
文章來源:http://www.zghlxwxcb.cn/news/detail-599582.html
保存后再啟動HDFS,但注意在啟動后,等待一段時間在去進行操作,因為HDFS啟動的時候有一段時間是安全模式,所以在安全模式下是操作不了HDFS的。文章來源地址http://www.zghlxwxcb.cn/news/detail-599582.html
到了這里,關(guān)于【hadoop】Java API連接(操作)HDFS的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!