雲服務器僞分佈式hadoop配置+javaAPI上傳下載刪除操縱(踩坑總結) --菜鳥小回

雲服務器僞分佈式hadoop配置+javaAPI上傳下載刪除操縱(踩坑總結)


注:本博文主要針對單臺雲服務器hadoop安裝配置。博主使用阿里雲的ECS服務器,Centos7系統,公網ip:120.27.244.176 私網ip:172.16.236.135 安全組開放所有端口,即1/65535


一、準備

  1. 創建:mkdir -p /opt/hadoop
  2. 進入:cd -p /opt/hadoop
  3. 上傳:
  4. 解壓:tar -zxvf hadoop-2.7.3.tar.gz
  5. 配置hosts:
vi  /etc/hosts
//必須添加內網ip
172.16.236.135 hadoop.idse.top
  1. 配置環境變量
vi /etc/profile
//添加環境變量
#配置hadoop
export HADOOP_HOME=/opt/hadoop/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin
//刷新配置
source /etc/profile

二、 配置hadoop

  1. 修改hadoop-env.sh
cd /opt/hadoop/hadoop-2.7.3/etc/hadoop/
vi hadoop-env.sh
//找到並修改
export JAVA_HOME=/opt/java/jdk1.8.0_141

enter description here

  1. 修改core-site.xml
vi core-site.xml
//注意域名端口改爲自己的hosts中設置
<property>
	<name>fs.defaultFS</name>
	<value>hdfs://hadoop.idse.top:9000</value>
</property>
<!-- 指定hadoop運行時產生文件的存儲目錄 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/zhiyou/hadoop/tmp</value>
</property>

enter description here

  1. 配置hdfs-site.xml
vi hdfs-site.xml
<property>
	<name>dfs.replication</name>
	<value>1</value>
</property>
  1. 配置yarn-site.xml
vi yarn-site.xml
//注意修改域名配置
<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>hadoop.idse.top</value>
</property>
<!-- reducer獲取數據的方式 -->
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>

enter description here

  1. 配置mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>
  1. 啓動
cd /opt/hadoop/hadoop-2.7.3/sbin/
./start-all.sh 
  1. 查看進程:jps
    enter description here
  2. 瀏覽器訪問(公網ip+端口):120.27.244.176:50070
    enter description here

坑1:未成功訪問請去安全組開放端口,自行百度hadoop所需端口,博主全開。

三、javaAPI上傳下載文件測試

@Test//上傳
public void upload() throws IOException, InterruptedException, URISyntaxException{
	//1.實例化configuration
	Configuration conf = new Configuration();
	/*雲服務器必須配置*/
	conf.set("dfs.replication", "1");
	conf.set("dfs.client.use.datanode.hostname", "true");
	//2.獲取文件系統
	FileSystem fs = FileSystem.get(new URI("hdfs://120.27.244.176:9000/"), conf, "root");
	//3.上傳fs.copyFromLocalFile(本地文件,目標地址)
	fs.copyFromLocalFile(new Path("C:\\Users\\NEVER\\Desktop\\day04-06\\day04_05fastJson的使用.avi"),new Path("/day04_05fastJson的使用.avi"));
	//4.關閉連接
	fs.close();
}
@Test//下載
public void download() throws IOException, InterruptedException, URISyntaxException{
	//1.實例化configuration
	Configuration conf = new Configuration();
	conf.set("dfs.replication", "1");
	conf.set("dfs.client.use.datanode.hostname","true");
	//2.獲取文件系統
	FileSystem fs = FileSystem.get(new URI("hdfs://120.27.244.176:9000/"), conf, "root");
	//3.下載
	//fs.copyToLocalFile(目標文件,本地地址)
	fs.copyToLocalFile(false,new Path("/c.jpg"), new Path("E:/d.jpg"),true);
	//4.關閉連接
	fs.close();
}
@Test//刪除
public void remove() throws IOException, InterruptedException, URISyntaxException{
	//1.實例化configuration
	Configuration conf = new Configuration();
	//2.獲取文件系統
	FileSystem fs = FileSystem.get(new URI("hdfs://120.27.244.176:9000/"), conf, "root");
	//fs.delete(要刪除的文件,boolean true false-只能刪除空的文件夾)
	fs.delete(new Path("/dow3.txt"),true);
	
	fs.close();
	
}

坑2:必須加上 conf.set(“dfs.replication”, “1”);
conf.set(“dfs.client.use.datanode.hostname”, “true”);不然上傳會爲空文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章