hdfs 之间 文件夹数据同步——来自我的QQ空间

hadoop distcp hdfs://pc1:8020/user/uar/receive/click/ (文件夹) hdfs://pc4:8020/user/uar/receive/click/(文件夹)

如果是同步文件,把文件夹换文件就好了
 18/10/30 16:23:01 INFO tools.DistCp: Input Options: DistCpOptions{atomicCommit=false, syncFolder=false, deleteMissing=false, ignoreFailures=false, maxMaps=20, sslConfigurationFile='null', copyStrategy='uniformsize', sourceFileListing=null, sourcePaths=[hdfs://10.30.5.80:8020/user/uar/receive/click], targetPath=hdfs://10.30.5.83:8020/user/uar/receive/click, targetPathExists=false, preserveRawXattrs=false}

18/10/30 16:23:01 INFO impl.TimelineClientImpl: Timeline service address: http://dev-bdp-node-03:8188/ws/v1/timeline/

18/10/30 16:23:01 INFO client.RMProxy: Connecting to ResourceManager at dev-bdp-node-03/10.30.5.82:8050

18/10/30 16:23:02 INFO impl.TimelineClientImpl: Timeline service address: http://dev-bdp-node-03:8188/ws/v1/timeline/

18/10/30 16:23:02 INFO client.RMProxy: Connecting to ResourceManager at dev-bdp-node-03/10.30.5.82:8050

18/10/30 16:23:03 INFO mapreduce.JobSubmitter: number of splits:2

18/10/30 16:23:03 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1537237069924_2182

18/10/30 16:23:03 INFO impl.YarnClientImpl: Submitted application application_1537237069924_2182

18/10/30 16:23:03 INFO mapreduce.Job: The url to track the job: http://dev-bdp-node-03:8088/proxy/application_1537237069924_2182/

18/10/30 16:23:03 INFO tools.DistCp: DistCp job-id: job_1537237069924_2182

18/10/30 16:23:03 INFO mapreduce.Job: Running job: job_1537237069924_2182

18/10/30 16:23:38 INFO mapreduce.Job: Job job_1537237069924_2182 running in uber mode : false

18/10/30 16:23:38 INFO mapreduce.Job:  map 0% reduce 0%

18/10/30 16:23:44 INFO mapreduce.Job:  map 100% reduce 0%

18/10/30 16:23:44 INFO mapreduce.Job: Job job_1537237069924_2182 completed successfully

18/10/30 16:23:45 INFO mapreduce.Job: Counters: 33

File System Counters

FILE: Number of bytes read=0

FILE: Number of bytes written=272846

FILE: Number of read operations=0

FILE: Number of large read operations=0

FILE: Number of write operations=0

HDFS: Number of bytes read=4590

HDFS: Number of bytes written=3711

HDFS: Number of read operations=28

HDFS: Number of large read operations=0

HDFS: Number of write operations=7

Job Counters 

Launched map tasks=2

Other local map tasks=2

Total time spent by all maps in occupied slots (ms)=6661

Total time spent by all reduces in occupied slots (ms)=0

Total time spent by all map tasks (ms)=6661

Total vcore-seconds taken by all map tasks=6661

Total megabyte-seconds taken by all map tasks=6820864

Map-Reduce Framework

Map input records=2

Map output records=0

Input split bytes=230

Spilled Records=0

Failed Shuffles=0

Merged Map outputs=0

GC time elapsed (ms)=540

CPU time spent (ms)=1310

Physical memory (bytes) snapshot=427872256

Virtual memory (bytes) snapshot=7511072768

Total committed heap usage (bytes)=371720192

File Input Format Counters 

Bytes Read=649

File Output Format Counters 

Bytes Written=0

org.apache.hadoop.tools.mapred.CopyMapper$Counter

BYTESCOPIED=3711

BYTESEXPECTED=3711

COPY=2

标识描述备注
-p[rbugp]Preserve
  r: replication number
  b: block size
  u: user
  g: group
  p: permission
修改次数不会被保留。并且当指定 -update 时,更新的状态会 被同步,除非文件大小不同(比如文件被重新创建)。
-i忽略失败就像在 附录中提到的,这个选项会比默认情况提供关于拷贝的更精确的统计, 同时它还将保留失败拷贝操作的日志,这些日志信息可以用于调试。最后,如果一个map失败了,但并没完成所有分块任务的尝试,这不会导致整个作业的失败。
-log <logdir>记录日志到 <logdir>DistCp为每个文件的每次尝试拷贝操作都记录日志,并把日志作为map的输出。 如果一个map失败了,当重新执行时这个日志不会被保留。
-m <num_maps>同时拷贝的最大数目指定了拷贝数据时map的数目。请注意并不是map数越多吞吐量越大。
-overwrite覆盖目标如果一个map失败并且没有使用-i选项,不仅仅那些拷贝失败的文件,这个分块任务中的所有文件都会被重新拷贝。 就像下面提到的,它会改变生成目标路径的语义,所以 用户要小心使用这个选项。
-update如果源和目标的大小不一样则进行覆盖像之前提到的,这不是"同步"操作。 执行覆盖的唯一标准是源文件和目标文件大小是否相同;如果不同,则源文件替换目标文件。 像 下面提到的,它也改变生成目标路径的语义, 用户使用要小心。
-f <urilist_uri>使用<urilist_uri> 作为源文件列表这等价于把所有文件名列在命令行中。 urilist_uri 列表应该是完整合法的URI。
<think>好的,我现在需要帮助用户了解如何配置Zynq从eMMC启动。根据用户提供的引用内容,特别是引用[3],其中提到了在ZYNQ开发中使用eMMC固化程序的方法,适用于需要高稳定性或量产的设备。我需要结合这些信息,给出一个结构清晰的步骤教程。 首先,我应该明确用户的需求。用户可能是在进行嵌入式系统开发,特别是使用Xilinx的Zynq系列芯片,想要将系统或应用程序固化到eMMC存储中,以便设备能够从eMMC启动。这可能涉及到Uboot的配置、镜像文件的生成以及启动参数的设置。 接下来,我需要回忆Zynq启动流程的基本知识。Zynq的启动过程通常分为多个阶段:首先是BootROM,然后是FSBL(First Stage Boot Loader),接着可能由SSBL(如U-Boot)接管,最后加载Linux内核或应用程序。从eMMC启动的话,需要确保启动镜像正确写入eMMC,并且Uboot的环境变量正确指向eMMC中的位置。 根据引用[2],用户提到了修改Uboot启动参数,这可能涉及到设置bootcmd和bootargs,例如指定根文件系统在eMMC中的位置。引用[3]提到了eMMC固化的步骤,可能需要生成BOOT.BIN和镜像文件,并通过工具将其写入eMMC。 现在,我需要将这些信息整理成步骤。首先,生成启动镜像,包括FSBL、比特流和U-Boot。然后,准备根文件系统,可能使用tar解压到某个目录,如引用[2]中的命令。接着,使用dd命令或专用工具将镜像写入eMMC的分区。之后,配置Uboot的环境变量,设置正确的启动命令和参数,确保从eMMC加载内核和根文件系统。最后,测试启动过程。 需要注意的是,用户可能不熟悉如何具体操作这些步骤,比如如何生成BOOT.BIN,如何确定eMMC的设备节点,如何正确分区和格式化eMMC。因此,步骤中需要详细说明这些关键点,可能涉及使用Xilinx的Vivado和Petalinux工具链,以及Linux下的命令如mkfs和dd。 同时,用户提供的引用[1]提到了分区信息,如“Device Boot Start End Blocks Id System”,这可能涉及eMMC的分区布局,需要确保启动分区和根文件系统分区的正确划分。例如,第一个分区可能用于存放BOOT.BIN和镜像,而第二个分区用于根文件系统。 在编写步骤时,要确保逻辑清晰,每个步骤都有明确的目的和操作命令。例如,生成启动镜像可能需要使用Petalinux的构建命令,配置Uboot参数可能涉及修改环境变量或设备树。此外,要提醒用户注意备份数据,因为写入eMMC可能会覆盖原有内容。 可能遇到的问题包括eMMC设备识别不正确、镜像文件路径错误、Uboot参数设置不当等。需要给出一些常见问题的解决方法,或者建议查阅相关文档。 最后,生成相关问题,可能涉及如何验证启动配置、如何优化eMMC的读写速度、在量产中如何批量固化等。</think>### 如何配置Zynq从eMMC启动 以下是配置Zynq从eMMC启动的详细步骤: --- #### **1. 生成启动镜像(BOOT.BIN)** - **步骤说明**:使用Xilinx工具链(Vivado/PetaLinux)生成包含FSBL(First Stage Boot Loader)、硬件比特流(Bitstream)和U-Boot的镜像文件。 - **操作命令**(PetaLinux环境): ```bash petalinux-package --boot --fsbl <fsbl.elf> --fpga <system.bit> --u-boot --force ``` 生成的`BOOT.BIN`将保存在`images/linux/`目录下[^3]。 --- #### **2. 准备根文件系统(RootFS)** - **步骤说明**:将根文件系统打包为`rootfs.tar.gz`,并通过命令解压到目标目录。 - **操作示例**: ```bash tar -xzvf /xxx/images/linux/rootfs.tar.gz -C /xxx/nfs/rootfs/ [^2] ``` 确保文件系统包含Linux内核(`Image`)和设备树(`system.dtb`)。 --- #### **3. 将镜像写入eMMC** - **分区要求**:通常将eMMC分为两个区: - **分区1(FAT32)**:存放`BOOT.BIN`、`Image`、`system.dtb`。 - **分区2(EXT4)**:存放根文件系统。 - **操作命令**(Linux主机): ```bash sudo dd if=BOOT.BIN of=/dev/mmcblk0p1 # 将BOOT.BIN写入eMMC启动分区 sudo mkfs.ext4 /dev/mmcblk0p2 # 格式化根文件系统分区 sudo cp -r rootfs/* /mnt/mmcblk0p2/ # 复制根文件系统 ``` --- #### **4. 配置U-Boot启动参数** - **关键变量**:在U-Boot中设置`bootcmd`和`bootargs`,指定从eMMC加载内核和根文件系统。 - **示例配置**: ```bash setenv bootcmd 'mmc dev 0; fatload mmc 0 0x8000 Image; fatload mmc 0 0x1000 system.dtb; booti 0x8000 - 0x1000' setenv bootargs 'root=/dev/mmcblk0p2 rw rootwait earlyprintk' saveenv ``` 其中`mmc dev 0`选择eMMC设备。 --- #### **5. 固化验证** - **操作步骤**:重启Zynq设备,观察U-Boot日志是否从eMMC加载镜像,并确认Linux成功挂载根文件系统。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值