1、完全分布式搭建
- hadoop102[namenode,datanode],hadoop103[datanode], hadoop104[secondarynamenode,datanode]
-
缺少104,配置104
- 选择完全克隆103
- 机器的名称 hadoop104
- 配置机器的IP 192.168.18.104修改 vim /etc/sysconfig/network-scripts/ifcfg-ens33
- 重启⽹络服务 systemctl restart network
- 重新连接ip为192.168.18.104的服务器
- 查看是否更改成功 ip addr
- 更改机器名称 hostnamectl set-hostname hadoop104
- 查看是否更改成功 hostname
- 重启 reboot 后重新连接104
- 配置xshell 访问hadoop104
-
查看是否映射成功
- ping -c 4 hadoop102
- ping -c 4 hadoop103
-
每台机器免密登录,⽣成密钥
- ssh-keygen -t rsa ,执⾏后三次回车即可
-
把密钥分发给每台机器(102,103开机)
- ssh-copy-id hadoop102
- ssh-copy-id hadoop103
-
在每台机器上分别访问每台机器
- ssh hadoop102
- ssh hadoop103
- hadoop102-104分别打开窗⼝,查看时间是否⼀致
- 在hadoop102-104上测试是否能相互ping通
- 在hadoop102-104上测试是否能相互免密登录[ssh]
- 安装包上传到hadoop102的/opt/software后解压到/opt/installtar -zxvf hadoop-2.6.0.tar.gz -C /opt/install
- 创建软链接 ln -s hadoop-2.6.0/ hadoop
- 在hadoop102上修改/opt/install/hadoop/etc/hadoop/core-site.xml
<!-- 指定 HDFS 中 NameNode 的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop102:9000</value> </property> <!-- 指定 hadoop 运行时产生文件的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/install/hadoop/data/tmp</value> </property>
- 在hado1o0p102上修改hdfs-site.xml
<!--设置数据块 Block 的副本数--> <property> <name>dfs.replication</name> <value>3</value> </property> <!--设置SecondaryNamenode主机和端口号--> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop104:50090</value> </property>
- 修改hadoop-env.sh:第25⾏export JAVA_HOME=/opt/install/jdk
- 修改hadoop102的/opt/install/hadoop/etc/hadoop/slaves⽂件,重写以下内容: hadoop102 hadoop103 hadoop104
- 复制102的安装包到103和104上,然后分别在每台机器上创建软链接hadoop: scp -r hadoop-2.6.0 hadoop103:/opt/install scp -r hadoop-2.6.0 hadoop104:/opt/install
- 修改hadoop102上的/etc/profile⽂件,在最后添加以下两⾏
export HADOOP_HOME=/opt/install/hadoop export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
- 复制hadoop102上的/etc/profile⽂件到hadoop103-104上,并在hadoop102-104上使⽂件⽣效: scp /etc/profile root@hadoop103:/etc/ scp /etc/profile root@hadoop104:/etc/ source /etc/profile
- 在hadoop102上格式化:hdfs namenode -format
- 在hadoop102上启动集群:start-dfs.sh
- 分别在hadoop102-104上通过jps查看服务启动情况
- 在浏览器中查看:http://hadoop102:50070
- 停⽌集群:stop-dfs.sh
- 通过jps查看服务停⽌情况
- 停机做快照
2、问题
格式化有问题datanode只有⼀个的,把三个主机的这三都删了,再重新格式化 /usr/local/src/hadoop/tmp /opt/install/hadoop-2.6.0/data /opt/install/hadoop-2.6.0/logs 3、使⽤HDFS shell处理移动通讯数据 1. 查看hdfs命令列表: hdfs 回车 2. 查看hdfs的⽂件操作命令列表 hdfs dfs 回车 3. 创建⽬录 hdfs dfs -mkdir -p /hdfs/shell 4. 查看⽬录 hdfs dfs -ls /hdfs/shell 5. 上传⽂件 hdfs dfs -put ./a.txt /hdfs/shell 6. 查看⽂件 hdfs dfs -cat /hdfs/shell/a.txt 7. 下载⽂件 hdfs dfs -get /hdfs/shell/a.txt ./d01 8. 查看指定⽂件或⽬录⼤⼩ hdfs dfs -du /hdfs/shell/a.txt 9. 删除指定⽂件 hdfs dfs -rm /hdfs/shell/a.txt 10. 删除指定⽬录 hdfs dfs -rm -r /hdfs 4、通过Java客户端操作hdfs 1. 创建任意⽬录 : 如 D:\myhadoop\bin 中放⼊winutils.exe 2. 配置环境变量 HADOOP_HOME:D:\myhadoop PATH中添加%HADOOP_HOME%\bin 3. 把hadoop.dll⽂件复制到c:\windows\system32中 4. 启动idea 搭建maven项⽬ 5. 添加pom.xml内容<dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.6.0</version> </dependency> </dependencies>6. 在src/main/resource下创建log4j.properties⽂件,添加如下内容
log4j.rootLogger=INFO, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n7. 编写 java代码,实现 创建⽬录,上传⽂件,下载⽂件,删除⽂件和目录
package com.kgc; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import java.io.IOException; import java.net.URI; public class HdfsTest { public static void main(String[] args) throws IOException, InterruptedException { //mkdirs(); //put(); //download(); //rm(); rmr(); } //创建目录 private static void mkdirs() throws IOException, InterruptedException { URI uri = URI.create("hdfs://hadoop102:9000"); Configuration conf=new Configuration(); String user="root"; //创建目录 FileSystem fileSystem = FileSystem.get(uri,conf,user); Path path=new Path("/day1128"); boolean mkdirs = fileSystem.mkdirs(path); fileSystem.close(); System.out.println(mkdirs ? "创建成功" : "创建失败"); } //上传文件 private static void put() throws IOException, InterruptedException { URI uri = URI.create("hdfs://hadoop102:9000"); Configuration conf=new Configuration(); String user="root"; //上传文件 FileSystem fileSystem = FileSystem.get(uri,conf,user); Path path = new Path("/day1128/a.txt"); Path src = new Path("day1128_hadoop/file/a.txt"); fileSystem.copyFromLocalFile(src,path); fileSystem.close(); } //下载文件 private static void download() throws IOException, InterruptedException { URI uri = URI.create("hdfs://hadoop102:9000"); Configuration conf=new Configuration(); String user="root"; //上传文件 FileSystem fileSystem = FileSystem.get(uri,conf,user); Path src = new Path("/day1128/a.txt"); Path path = new Path("day1128_hadoop/file/b.txt"); fileSystem.copyToLocalFile(src,path); fileSystem.close(); } //删除文件 private static void rm() throws IOException, InterruptedException { URI uri = URI.create("hdfs://hadoop102:9000"); Configuration conf=new Configuration(); String user="root"; //上传文件 FileSystem fileSystem = FileSystem.get(uri,conf,user); Path path = new Path("/day1128/a.txt"); fileSystem.delete(path,true); fileSystem.close(); } //删除文件 private static void rmr() throws IOException, InterruptedException { URI uri = URI.create("hdfs://hadoop102:9000"); Configuration conf=new Configuration(); String user="root"; //上传文件 FileSystem fileSystem = FileSystem.get(uri,conf,user); Path path = new Path("/day1128"); fileSystem.delete(path,true); fileSystem.close(); } }
标签:hdfs,HDFS,fileSystem,hadoop,dfs,分布式系统,Path,hadoop102 From: https://www.cnblogs.com/hsk991213/p/17865592.html