- Tạo ứng dụng Spring Boot bằng Spring Launchizr
- Cấu hình Cassandra trong Spring Boot
- Định cấu hình nhóm kết nối Tomcat trên Spring Boot
- Định tuyến tin nhắn Camel đến Artemis được nhúng bằng WildFly
Đầu tiên chúng ta cùng xem sơ đồ tương tác của HDFS:
Có thể thấy rằng có một số vai trò trong giao tiếp: client, NameNode, PrimaryNamenode và DataNode; trong đó, PrimaryNamenode chỉ tương tác với NameNode và ba vai trò còn lại có thể tương tác với nhau, vì vậy có client— >NameNode, client—>DataNode, DataNode—>NameNode, DataNode—>DataNode, cộng với PrimaryNamenode<—>NameNode Trước tiên chúng ta sẽ xác định phác thảo chung thông qua mã nguồn.
Trên thực tế, có hai giao thức truyền thông trong Hadoop. Một giao thức dựa trên Hadoop RPC. Trên thực tế, lớp dưới cùng sử dụng ProtoBuf. Giao thức này chủ yếu được sử dụng để liên lạc giữa các quá trình giống như cuộc gọi cục bộ; khác là khi truyền phát trực tuyến, xét cho cùng, Hadoop được sử dụng để lưu trữ dữ liệu tệp, yêu cầu truyền phát để đọc và ghi, vì tệp không thể bị gián đoạn và có tính liên tục. Bài viết này chủ yếu giới thiệu về giao tiếp giữa các vai trò khác nhau, tức là giữa các tiến trình, nên chủ yếu là về giao diện RPC. Tất nhiên, cách triển khai cụ thể sẽ được giải thích rõ ràng ở đầu bài viết. phác thảo thô.
Giao diện Hadoop RPC chủ yếu được xác định trong hai gói org.apache.hadoop.hdfs.server.protocol và org.apache.hadoop.hdfs.protocol. Nó chủ yếu bao gồm các giao diện sau:
Tiếp theo chúng tôi sẽ giới thiệu từng người một.
ClientProtocol xác định tất cả các hoạt động do máy khách khởi tạo và được NameNode phản hồi. Giao diện này rất lớn, với khoảng 80 phương thức:
Xem mã
/** * Được cấp phép cho Apache Software Foundation (ASF) theo một * hoặc nhiều thỏa thuận cấp phép cộng tác viên. Xem tệp THÔNG BÁO * được phân phối cùng với tác phẩm này để biết thêm thông tin * về quyền sở hữu bản quyền ASF cấp phép cho tệp này * cho bạn theo Apache. Giấy phép, Phiên bản 2.0 ("Giấy phép"); bạn không được sử dụng tệp này trừ khi tuân thủ * với Giấy phép. Bạn có thể lấy bản sao của Giấy phép tại * *. http://www.apache.org/licenses/LICENSE-2.0 * * Trừ khi luật hiện hành yêu cầu hoặc được đồng ý bằng văn bản, phần mềm * được phân phối theo Giấy phép sẽ được phân phối trên CƠ SỞ "NGUYÊN TRẠNG", * KHÔNG CÓ BẢO ĐẢM HOẶC ĐIỀU KIỆN BẤT KỲ LOẠI NÀO, rõ ràng hoặc ngụ ý * Xem Giấy phép để biết các quyền quản lý ngôn ngữ cụ thể và * các giới hạn theo Giấy phép */ gói org.apache.hadoop.hdfs.protocol; java.io.IOException; nhập java.util.EnumSet; nhập java.util.List; nhập java.util.Map; nhập org.apache.hadoop.classification.InterfaceAudience; nhập org.apache.hadoop.crypto.CryptoProtocolVersion; org.apache.hadoop.fs.BatchedRemoteIterator.BatchedEntries; nhập org.apache.hadoop.fs.PathIsNotEmptyDirectoryException; nhập org.apache.hadoop.ha.HAServiceProtocol; nhập org.apache.hadoop.hdfs.AddBlockFlag; nhập hadoop.fs.CacheFlag; org.apache.hadoop.fs.ContentSummary; nhập org.apache.hadoop.fs.CreateFlag; nhập org.apache.hadoop.fs.FsServerDefaults; nhập org.apache.hadoop.fs.Options; fs.QuotaUsage; nhập org.apache.hadoop.fs.StorageType; org.apache.hadoop.fs.XAttr; nhập org.apache.hadoop.fs.XAttrSetFlag; nhập org.apache.hadoop.fs.permission.AclEntry; nhập org.apache.hadoop.fs.permission.AclStatus; nhập apache.hadoop.fs.permission.FsAction; org.apache.hadoop.fs.permission.FsPermission; nhập org.apache.hadoop.hdfs.inotify.EventBatchList; nhập org.apache.hadoop.hdfs.protocol.HdfsConstants.ReencryptAction; nhập .HdfsConstants.RollingUpgradeAction; org.apache.hadoop.hdfs.protocol.OpenFilesIterator.OpenFilesType; nhập org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey; nhập org.apache.hadoop.hdfs.security.token.delegation.DelegationTokenIdentifier; org.apache.hadoop.hdfs.security.token.delegation.DelegationTokenSelector; nhập org.apache.hadoop.hdfs.server.namenode.ha.ReadOnly; nhập org.apache.hadoop.hdfs.server.protocol.DatanodeStorageReport; nhập .apache.hadoop.io.EnumSetWritable; org.apache.hadoop.io.Text; nhập org.apache.hadoop.io.retry.AtmostOnce; nhập org.apache.hadoop.io.retry.Idempotent; nhập org.apache.hadoop.security.AccessControlException; nhập apache.hadoop.security.KerberosInfo; nhập org.apache.hadoop.security.token.Token; org.apache.hadoop.security.token.TokenInfo; nhập org.apache.hadoop.hdfs.client.HdfsClientConfigKeys tĩnh.DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY /************************************************ ***** ************************* * ClientProtocol được sử dụng bởi mã người dùng thông qua lớp DistributedFileSystem để * giao tiếp với NameNode Mã người dùng có thể thao tác. không gian tên thư mục *, cũng như các luồng tệp mở/đóng, v.v. * ********************************** ***** ****************************************/ @InterfaceAudience.Private @InterfaceStability.Evolving @KerberosInfo( serverPrincipal = DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY) @TokenInfo(DelegationTokenSelector.class) giao diện công cộng ClientProtocol { /** * Cho đến phiên bản 69, lớp ClientProtocol này đóng vai trò vừa là * giao diện máy khách với NN VÀ giao thức RPC được sử dụng để * giao tiếp với NN * * Lớp này được sử dụng bởi cả hai. DFSClient và phía máy chủ * NN để cách ly khỏi việc tuần tự hóa giao thức. * * Nếu bạn đang thêm/thay đổi giao diện này thì bạn cần * thay đổi cả lớp này và bộ đệm giao thức liên quan CŨNG * định nghĩa giao thức dây trong ClientNamenodeProtocol.proto. để biết thêm chi tiết về giao thức dây đệm giao thức, vui lòng xem * .../org/apache/hadoop/hdfs/protocolPB/overview.html * * Có thể truy xuất nhật ký về các thay đổi lịch sử từ svn). * 69: Loại bỏ các tên phương thức bị quá tải. */ long versionID = 69L; /////////////////////////////////// // Nội dung tập tin //////////////////////////////////////////** * Lấy vị trí của các khối của tệp được chỉ định * trong phạm vi được chỉ định * Vị trí DataNode cho mỗi khối được sắp xếp theo * mức độ gần với ứng dụng khách. * Vị trí DataNode cho mỗi khối được sắp xếp theo * khoảng cách đến địa chỉ của khách hàng. *
* chứa một liên kết tượng trưng * @throws IOException Nếu xảy ra lỗi I/O */ @Idempotent voidvoidBlock(ExtendsBlock b, long fileId, String src, Stringholder) ném IOException; /** * Một khách hàng muốn ghi một khối bổ sung vào * tên tệp được chỉ định (hiện phải mở để ghi) * nên gọi addBlock( ). * * addBlock() phân bổ một khối mới và mã hóa dữ liệu khối * sẽ được sao chép vào. tem tạo thực tế và độ dài * của khối mà máy khách đã truyền đến các nút dữ liệu * * * @param src tệp đang được tạo * @param clientName tên của máy khách đã thêm khối * @param khối trước đó *. @param loại trừNodes danh sách các nút không nên * được phân bổ cho khối hiện tại * @param fileId id xác định duy nhất một tệp * @param favoriteNodes danh sách các nút mà khách hàng muốn các khối đó * Các nút được xác định bởi một trong hai. tên hoặc địa chỉ máy chủ * @param addBlockFlags gắn cờ để thông báo hành vi phân bổ và đặt * một khối mới * * @return Thông tin khối được phân bổ * * @throws org.apache.hadoop.security.AccessControlException Nếu quyền truy cập bị * từ chối * @throws java.io.FileNotFoundException Nếu không tìm thấy tệp* Sau đó, khách hàng sẽ phải liên hệ với * một trong các DataNodes được chỉ định để lấy dữ liệu thực tế * * @ phạm vi bù đắp @param độ dài phạm vi bắt đầu * * @. trả về độ dài tệp và mảng khối cùng với vị trí của chúng * * @throws org.apache.hadoop.security.AccessControlException Nếu quyền truy cập bị * từ chối * @throws java.io.FileNotFoundException Nếu tệp
src
không * tồn tại * @throws org.apache.hadoop.fs.UnresolvedLinkException Nếusrc
* chứa một liên kết tượng trưng * @throws IOException Nếu xảy ra lỗi I/O */ @Idempotent @ReadOnly(atimeAffected = true, isCoordine = true) LocationBlocks getBlockLocations(String src, long offset, long length) ném IOException; /** * Nhận các giá trị mặc định của máy chủ cho một số thông số cấu hình * @return một tập hợp các giá trị cấu hình mặc định của máy chủ * @throws IOException */ @Idempotent @ReadOnly(isCoordine = true) FsServerDefaults getServerDefaults( ) ném IOException; /** * Tạo một mục nhập tệp mới trong không gian tên.** Điều này sẽ tạo một tệp trống được chỉ định bởi đường dẫn nguồn * Đường dẫn phải phản ánh một đường dẫn đầy đủ có nguồn gốc từ gốc * Nút tên không có khái niệm về thư mục "hiện tại" cho máy khách *.
* Sau khi được tạo, tệp sẽ hiển thị và có sẵn để đọc cho các ứng dụng khách khác * Mặc dù, các ứng dụng khách khác không thể {@link #delete(String, boolean)}, tạo lại * hoặc {@link #rename(String, String)} cho đến khi tệp được hoàn thành * hoặc rõ ràng là do hết hạn hợp đồng thuê *
* Các khối có kích thước tối đa * Các tệp nhiều khối cũng phải sử dụng * {@link #addBlock} * * @param src đường dẫn của tệp. đang được tạo. * @param quyền được che dấu * * @param tên clientName của ứng dụng khách hiện tại * Cờ @param cho biết liệu tệp có nên được ghi đè nếu nó đã tồn tại * hay được tạo nếu nó không tồn tại hoặc nối thêm hay không. tập tin nên là một tệp sao chép, bất kể chính sách mã hóa * sao chép hoặc xóa của tổ tiên của nó là gì * * @param createParent tạo thư mục mẹ bị thiếu nếu đúng * @param hệ số sao chép khối sao chép * @param blockSize kích thước khối tối đa. bởi khách hàng * @param ecPolicyName tên của chính sách mã hóa xóa có nghĩa là * tệp này sẽ kế thừa chính sách của thư mục mẹ của nó, * sao chép truyền thống hoặc mã hóa xóa. * chính sách. ecPolicyName và SHOULD_REPLICATE CreateFlag * loại trừ lẫn nhau. Việc đặt cả cờ * SHOULD_REPLICATE và ecPolicyName không có giá trị là không hợp lệ. * @param storagePolicy tên của chính sách lưu trữ. có thể là null nếu máy chủ * không hỗ trợ trả về trạng thái tệp * @throws org.apache.hadoop.security.AccessControlException Nếu quyền truy cập bị * bị từ chối * @throws HaveBeingCreatedException nếu đường dẫn không tồn tại. * @throws DSQuotaExceededException Nếu việc tạo tệp vi phạm dung lượng ổ đĩa * hạn chế hạn ngạch * @throws org.apache.hadoop.fs.FileAlreadyExistsException Nếu tệp *
src
đã tồn tại * @throws java.io.FileNotFoundException Nếu cha củasrc
* không tồn tại vàcreateParent
là sai * @throws org.apache.hadoop.fs.ParentNotDirectoryException Nếu cha của *src
không phải là một thư mục * @throws NSQuotaExceededException Nếu việc tạo tệp vi phạm không gian tên * hạn chế hạn ngạch * @throws org.apache.hadoop.hdfs.server.namenode.SafeModeException tạo không * được phép trong chế độ an toàn * @throws org.apache.hadoop.fs.UnresolvedLinkException Nếusrc
* chứa liên kết tượng trưng * @throws SnapshotAccessControlException nếu đường dẫn nằm trong ảnh chụp nhanh RO * @throws IOException Nếu xảy ra lỗi I/O * * RuntimeExceptions: * @throws org.apache.hadoop.fs.Đường dẫn ngoại lệ InvalidPathExceptionsrc
* không hợp lệ ** Lưu ý rằng việc tạo bằng {@link CreateFlag#OVERWRITE} là idempotent. */ @AtmostOnce HdfsFileStatus create(String src, FsPermission bị che, String clientName, cờ EnumSetWritable
, boolean createParent, sao chép ngắn, blockSize dài, CryptoProtocolVersion[]supportVersions, String ecPolicyName, String storagePolicy) ném IOException; /** * Nối vào cuối tệp. * @param src đường dẫn của tệp đang được tạo. cờ cho biết liệu dữ liệu có được thêm vào một khối mới hay không * @return trình bao bọc với thông tin về khối một phần cuối cùng và trạng thái tệp * nếu có * @throws. org.apache.hadoop.security.AccessControlException nếu hệ thống từ chối quyền * nối thêm tệp. Như thường lệ ở phía máy khách, ngoại lệ * sẽ được gói vào * {@link org.apache.hadoop.ipc.RemoteException}. Cho phép thêm vào một tệp hiện có nếu máy chủ được * định cấu hình với tham số dfs.support.append được đặt thành true, nếu không * sẽ ném IOExceptions. org.apache.hadoop.security.AccessControlException Nếu quyền * nối vào tệp bị từ chối * @throws java.io.FileNotFoundException Nếu không tìm thấy tệp src
* @throws DSQuotaExceededException Nếu nối thêm vi phạm hạn ngạch dung lượng ổ đĩa * hạn chế * @throws org.apache.hadoop.hdfs.server.namenode.SafeModeException nối thêm không * được phép trong safemode * @throws org.apache.hadoop.fs.UnresolvedLinkException Nếusrc
* chứa một liên kết tượng trưng * @throws SnapshotAccessControlException nếu đường dẫn nằm trong ảnh chụp nhanh RO * @throws IOException Nếu xảy ra lỗi I/O. RuntimeExceptions: * @throws UnsupportedOperationException nếu phần bổ sung không được hỗ trợ */ @AtmostOnce LastBlockWithStatus append(String src, String clientName, EnumSetWritableflag) ném IOException; /** * Đặt bản sao cho một tệp hiện có. * * NameNode đặt bản sao thành giá trị mới và trả về * Bản sao khối thực tế là. dự kiến sẽ không được thực hiện trong * lệnh gọi phương thức này. Các khối sẽ được điền hoặc xóa trong nền * do kết quả của quy trình bảo trì khối định kỳ. tên tệp * @param sao chép bản sao mới. * * @return true nếu thành công; * false nếu tệp không tồn tại hoặc là một thư mục * * @throws org.apache.hadoop.security.AccessControlException Nếu quyền truy cập bị * từ chối * @throws DSQuotaExceededException Nếu bản sao vi phạm dung lượng ổ đĩa * hạn chế hạn ngạch * @throws java.io.FileNotFoundException Nếu không tìm thấy tệp
src
* @throws org.apache.hadoop.hdfs.server.namenode.SafeModeException không * được phép ở chế độ an toàn * @throws org.apache.hadoop.fs.UnresolvedLinkException ifsrc
* chứa một liên kết tượng trưng * @throws SnapshotAccessControlException nếu đường dẫn nằm trong RO snapshot * @throws IOException Nếu xảy ra lỗi I/O */ @Idempotent boolean setReplication(String src, short replica) ném IOException ; /** * Nhận tất cả các chính sách lưu trữ khối hiện có */return Tất cả các chính sách lưu trữ khối đang sử dụng. @Idempotent @ReadOnly(isCoordine = true) BlockStoragePolicy[] getStoragePolicies() ném IOException; /** * Đặt chính sách lưu trữ cho một tệp/thư mục. * @param src Đường dẫn của tệp/thư mục hiện có. của chính sách lưu trữ * @throws SnapshotAccessControlException Nếu quyền truy cập bị từ chối * @throws org.apache.hadoop.fs.UnresolvedLinkException nếusrc
* chứa một liên kết tượng trưng * @throws java.io.FileNotFoundException Nếu không tìm thấy tệp/dirsrc
* @throws QuotaExceededException Nếu các thay đổi vi phạm hạn chế hạn ngạch */ @Idempotent void setStoragePolicy(String src, String PolicyName) sẽ ném IOException; /** * Bỏ đặt chính sách lưu trữ được đặt cho một tệp hoặc thư mục nhất định. * @param src Đường dẫn của tệp/thư mục hiện có * @throws SnapshotAccessControlException Nếu quyền truy cập bị từ chối * @throws org.apache.hadoop.fs.UnresolvedLinkException. ifsrc
* chứa một liên kết tượng trưng * @throws java.io.FileNotFoundException Nếu file/dirsrc
không * được tìm thấy * @throws QuotaExceededException Nếu các thay đổi vi phạm giới hạn hạn ngạch */ @Idempotent void unsetStoragePolicy(String src) ném IOException; * Nhận chính sách lưu trữ cho một tệp/thư mục *. Đường dẫn @param * Đường dẫn của tệp/thư mục hiện có * @throws AccessControlException * Nếu quyền truy cập bị từ chối * @throws. org.apache.hadoop.fs.UnresolvedLinkException * nếusrc
chứa liên kết tượng trưng * @throws java.io.FileNotFoundException * Nếu không tìm thấy tệp/dirsrc
*/ @Idempotent @ReadOnly(isCoorned = true) BlockStoragePolicy getStoragePolicy(String path) ném IOException /** * Set quyền đối với một tập tin/thư mục hiện có. org.apache.hadoop.hdfs.server.namenode.SafeModeException không * được phép ở chế độ an toàn * @throws org.apache.hadoop.fs.UnresolvedLinkException Nếusrc
* chứa một liên kết tượng trưng * @throws SnapshotAccessControlException nếu đường dẫn nằm trong ảnh chụp nhanh RO * @throws IOException Nếu xảy ra lỗi I/O */ @Idempotent void setPermission( Chuỗi src, quyền FsPermission) ném IOException; /** * Đặt chủ sở hữu của một đường dẫn (tức là một tệp hoặc một thư mục). * Tham số tên người dùng và tên nhóm không thể rỗng. * Đường dẫn tệp @param src * Tên người dùng @param Nếu là null, tên người dùng ban đầu vẫn không thay đổi.tên nhóm ban đầu không thay đổi. apache.hadoop.hdfs.server.namenode.SafeModeException không * được phép ở chế độ an toàn * @throws org.apache.hadoop.fs.UnresolvedLinkException Nếusrc
* chứa một liên kết tượng trưng * @throws SnapshotAccessControlException nếu đường dẫn nằm trong ảnh chụp nhanh RO * @throws IOException Nếu xảy ra lỗi I/O */ @Idempotent void setOwner( String src, String username, String groupname) ném IOException; /** * Máy khách có thể từ bỏ một khối bằng cách gọi AbandonBlock(). * Sau đó, khách hàng có thể lấy một khối mới hoặc hoàn thành hoặc hủy bỏ tệp * * Mọi phần ghi vào khối sẽ bị loại bỏ. tệp nơi khối cư trú. * sẽ chuyển GRANDFATHER_INODE_ID tại đây * * @param src Đường dẫn của tệp nơi khối nằm. @throws org.apache.hadoop.security.AccessControlException Nếu quyền truy cập bị * bị từ chối * @throws java.io.FileNotFoundException tệpsrc
không được tìm thấy * @throws org.apache.hadoop.fs.UnresolvedLinkException Nếu < code>srcsrc
* @throws org.apache.hadoop.hdfs.server.namenode.NotReplicatedYetException * các khối trước của tệp chưa được sao chép * Các khối không thể được thêm vào cho đến khi quá trình sao chép @throws org.apache.hadoop.hdfs.server.namenode.SafeModeException được tạo. không * được phép ở chế độ an toàn * @throws org.apache.hadoop.fs.UnresolvedLinkException Nếusrc
* chứa một liên kết tượng trưng * @throws IOException Nếu xảy ra lỗi I/O */ @Idempotent LocationBlock addBlock(String src, String clientName, ExtendedBlock previous, DatanodeInfo[] strictNodes, long fileId, String [] favoriteNodes, EnumSetaddBlockFlags) ném IOException; /** * Nhận nút dữ liệu cho đường dẫn hiện có * * @param src tệp đang được ghi * @param fileId ID của tệp đang được ghi * @param blk khối đang được ghi * @param tồn tại các nút hiện có trong đường dẫn * @param loại trừ các nút bị loại trừ * @param numAdditionalNodes số lượng nút dữ liệu bổ sung * @param clientName tên của máy khách * * @return khối được định vị. org.apache.hadoop.security.AccessControlException Nếu quyền truy cập bị * bị từ chối * @throws java.io.FileNotFoundException Nếu không tìm thấy tệp src
* @throws org.apache.hadoop.hdfs.server.namenode. SafeModeException tạo không * được phép trong safemode * @throws org.apache.hadoop.fs.UnresolvedLinkException Nếusrc
* chứa một liên kết tượng trưng * @throws IOException Nếu xảy ra lỗi I/O */ @Idempotent LocationBlock getAdditionalDatanode(chuỗi cuối cùng src, fileId dài cuối cùng, ExtendedBlock blk cuối cùng, DatanodeInfo cuối cùng[] hiện có, Chuỗi cuối cùng [] các ID lưu trữ hiện có, DatanodeInfo cuối cùng [] không bao gồm, int cuối cùng numAdditionalNodes, Chuỗi cuối cùng clientName ) ném IOException; /** * Máy khách đã hoàn tất việc ghi dữ liệu vào tên tệp đã cho và muốn * hoàn thành nó. * * Hàm trả về xem tệp đã được đóng thành công hay chưa. * Nếu hàm trả về sai, người gọi nên thử. một lần nữa. * * close() cũng cam kết khối cuối cùng của tệp bằng cách báo cáo * cho nút tên về dấu tạo thực tế và độ dài * của khối mà máy khách đã truyền đến nút dữ liệu. ) sẽ không trả về đúng cho đến khi tất cả các khối * của tệp đã được sao chép với số lần tối thiểu. Do đó, lỗi * DataNode có thể khiến máy khách gọi số * lần trước khi thành công. thêm khối * @param cuối cùng thông tin khối cuối cùng * @param fileId id xác định duy nhất một tệp * * @return true nếu tất cả các khối tệp được sao chép tối thiểu hoặc sai nếu không * * @throws org.apache.hadoop.security.AccessControlException Nếu quyền truy cập bị * bị từ chối * @throws java.io.FileNotFoundException Nếu không tìm thấy tệpsrc
* @throws org.apache.hadoop.hdfs.server.namenode. SafeModeException không tạo ra * được phép trong safemode * @throws org.apache.hadoop.fs.UnresolvedLinkException Nếusrc
* chứa một liên kết tượng trưng * @throws IOException Nếu xảy ra lỗi I/O */ @Idempotent boolean Complete(String src, String clientName, ExtendedBlock Last,long fileId) ném IOException; /** * Máy khách muốn báo cáo các khối bị hỏng (các khối có * vị trí được chỉ định trên nút dữ liệu). IOException; /////////////////////////////////////// // Quản lý không gian tên ///////////////////////////////////////** * Đổi tên một mục trong không gian tên hệ thống tệp. * @param src tên tệp hoặc thư mục hiện có * @param dst tên mới. không gian tên . SnapshotAccessControlException nếu đường dẫn nằm trong ảnh chụp nhanh RO * @throws IOException đã xảy ra lỗi I/O */ @AtmostOnce booleanname(String src, String dst) ném IOException /** * Di chuyển các khối từ srcs sang trg và xóa srcs. param trg tệp hiện có * @param srcs - danh sách các tệp hiện có (cùng kích thước khối, cùng bản sao) * @throws IOException nếu một số đối số không hợp lệ * @throws org.apache.hadoop.fs.UnresolvedLinkException nếutrg
hoặc *srcs
chứa một liên kết tượng trưng * @throws SnapshotAccessControlException nếu có đường dẫn Ảnh chụp nhanh RO */ @AtmostOnce void concat(String trg, String[] srcs) ném IOException /** * Đổi tên; src sang dst. **
*- Không thành công nếu src là một tệp và dst là một thư mục. không tồn tại hoặc là một tập tin *
* Không có tùy chọn OVERWRITE, đổi tên không thành công nếu dst đã tồn tại. * Với tùy chọn OVERWRITE, đổi tên. ghi đè lên dst, nếu đó là một tệp * hoặc một thư mục trống. Đổi tên không thành công nếu dst là một thư mục không trống. name. * @param dst tên mới * * Tùy chọn @param Đổi tên tùy chọn * * @throws org.apache.hadoop.security.AccessControlException Nếu quyền truy cập bị * từ chối * @throws DSQuotaExceededException Nếu việc đổi tên vi phạm dung lượng ổ đĩa * hạn chế hạn ngạch * @throws org.apache.hadoop.fs.FileAlreadyExistsException Nếu
dst
* đã tồn tại vàtùy chọn
có * {@link org.apache Tùy chọn .hadoop.fs.Options.Rename#OVERWRITE} * false * @throws java.io.FileNotFoundException Nếusrc
không tồn tại * @throws NSQuotaExceededException Nếu đổi tên vi phạm không gian tên * hạn chế hạn ngạch * @throws org.apache.hadoop.fs.ParentNotDirectoryException Nếu cha của *dst
không phải là một thư mục * @throws org.apache.hadoop.hdfs.server.namenode.SafeModeException không đổi tên * được phép ở chế độ an toàn * @throws org.apache.hadoop.fs.UnresolvedLinkException Nếusrc
hoặc *dst
chứa một liên kết tượng trưng * @throws SnapshotAccessControlException nếu đường dẫn nằm trong ảnh chụp nhanh RO * @throws IOException Nếu I /O đã xảy ra lỗi */ @AtmostOnce voidname2(String src,Chuỗi dst, Options.Rename... options) ném IOException; /** * Cắt bớt tệp src sang kích thước mới. . *Không thành công nếu src không được đóng * Không thành công nếu kích thước mới lớn hơn kích thước hiện tại. một thao tác không gian tên nếu cắt bớt * xảy ra ở ranh giới khối. Mặt khác, yêu cầu khôi phục khối DataNode * @param src tệp hiện có * @param newLength kích thước mục tiêu * * @return true nếu máy khách không cần đợi khôi phục khối. , * sai nếu khách hàng cần đợi khôi phục khối. * * @throws org.apache.hadoop.security.AccessControlException Nếu quyền truy cập bị * từ chối * @throws. java.io.FileNotFoundException Nếu không tìm thấy tệp *src
* @throws org.apache.hadoop.hdfs.server.namenode.SafeModeException cắt ngắn * không được phép trong safemode * @throws org.apache.hadoop.fs .UnresolvedLinkException Nếusrc
* chứa liên kết tượng trưng * @throws SnapshotAccessControlException nếu đường dẫn nằm trong ảnh chụp nhanh RO * @throws IOException Nếu xảy ra lỗi I/O */ @Idempotent boolean truncate(String src, long newLength, String clientName) ném IOException /** * Xóa tệp hoặc thư mục đã cho khỏi tệp; system. ** tương tự như xóa nhưng cung cấp một cách để tránh vô tình * xóa các thư mục không trống theo chương trình. tên hiện tại * @param đệ quy nếu đúng sẽ xóa một thư mục không trống theo cách đệ quy, * nếu không thì sẽ đưa ra một ngoại lệ. * @return true chỉ khi tệp hoặc thư mục hiện có thực sự bị xóa * khỏi hệ thống tệp. .security.AccessControlException Nếu quyền truy cập bị * bị từ chối * @throws java.io.FileNotFoundException Nếu không tìm thấy tệp
src
* @throws org.apache.hadoop.hdfs.server.namenode.SafeModeException tạo không * được phép trong chế độ an toàn * @throws org.apache.hadoop.fs.UnresolvedLinkException Nếusrc
* chứa liên kết tượng trưng * @throws SnapshotAccessControlException nếu đường dẫn nằm trong ảnh chụp nhanh RO * @throws PathIsNotEmptyDirectoryException nếu đường dẫn là một thư mục không trống * vàđệ quy
được đặt thành false * @throws IOException Nếu xảy ra lỗi I/O */ @AtmostOnce boolean delete(String src, boolean recursive) ném IOException; /** * Tạo một thư mục (hoặc phân cấp của các thư mục) với tên và quyền đã cho * * * @param src Đường dẫn của thư mục đang được tạo * @param bị che giấu Quyền được che dấu của thư mục đang được tạo * @param createParent tạo thư mục mẹ bị thiếu nếu đúng * * @return Đúng nếu thao tác thành công. >src * đã tồn tại * @throws java.io.FileNotFoundException Nếu cha củasrc
* không tồn tại vàcreateParent
sai * @throws NSQuotaExceededException Nếu việc tạo tệp vi phạm hạn ngạch * hạn chế * @throws org.apache.hadoop.fs.ParentNotDirectoryException Nếu cha của *src
không phải là thư mục * @throws org.apache.hadoop.hdfs.server.namenode.SafeModeException tạo không * được phép trong chế độ an toàn * @throws org.apache.hadoop.fs.UnresolvedLinkException Nếusrc
* chứa liên kết tượng trưng * @throws SnapshotAccessControlException nếu đường dẫn nằm trong ảnh chụp nhanh RO * @throws IOException Nếu xảy ra lỗi I/O. * @throws org.apache.hadoop.fs.InvalidPathException Nếusrc
* không hợp lệ */ @Idempotent boolean mkdirs(String src, FsPermission che dấu, boolean createParent) ném IOException /** * Nhận một phần; liệt kê thư mục được chỉ định. src tên thư mục * @param startSau tên để bắt đầu liệt kê sau khi được mã hóa trong java. UTF8 * @param needLocation nếu FileStatus phải chứa các vị trí khối * * @return một phần danh sách bắt đầu sau startAfter * * @throws org.apache.hadoop.security.AccessControlException quyền bị từ chối * @throws java.io.FileNotFoundException tệpsrc
không được tìm thấy * @throws org.apache.hadoop.fs.UnresolvedLinkException Nếusrc
* chứa một liên kết tượng trưng * @throws IOException Nếu xảy ra lỗi I/O */ @Idempotent @ReadOnly(isCoordined = true) DirectoryListing getListing(String src, byte[] startAfter, boolean needLocation) ném IOException ; /** * Lấy danh sách một phần các thư mục đầu vào * * @param srcs các thư mục đầu vào * @param startSau tên tới bắt đầu liệt kê sau khi được mã hóa bằng Java UTF8 * @param needLocation nếu FileStatus phải chứa các vị trí khối * * @return một phần danh sách bắt đầu sau startAfter null nếu đầu vào * trống * @throws IOException nếu xảy ra lỗi I/O */ @ Idempotent @ReadOnly(isCoored = true) BatchedDirectoryListing getBatchedListing( String[] srcs, byte[] startAfter, boolean needLocation) ném IOException; /** * Lấy danh sách các thư mục có thể chụp nhanh được sở hữu * bởi người dùng hiện tại. Trả về tất cả các thư mục có thể chụp nhanh nếu * người dùng hiện tại là siêu người dùng *. @throws IOException Nếu xảy ra lỗi I/O */ @Idempotent @ReadOnly(isCoordine = true) SnapshottableDirectoryStatus[] getSnapshottableDirListing() ném ra. IOException; ///////////////////////////////////// // Các vấn đề về hệ thống và quản lý / //////////////////////////////////////** * Các chương trình máy khách có thể gây ra trạng thái những thay đổi trong NameNode * ảnh hưởng đến các máy khách khác có thể lấy được một tệp và * không được từ bỏ cũng như không được bỏ qua. hoàn thành nó. Một khách hàng có thể giữ một loạt * khóa ngăn cản các khách hàng khác tiếp tục.Sẽ thật tệ nếu một khách hàng giữ một loạt khóa * mà nó không bao giờ từ bỏ. Điều này có thể dễ dàng xảy ra nếu khách hàng * chết đột ngột * Vì vậy, NameNode sẽ thu hồi các khóa và tạo tệp trực tiếp * cho. các máy khách mà nó cho là đã chết. Một máy khách thông báo cho * NameNode rằng nó vẫn còn tồn tại bằng cách gọi định kỳ * Renesas(). Nếu một khoảng thời gian nhất định trôi qua kể từ * lệnh gọi cuối cùng tới gia hạnLease(), NameNode sẽ giả sử máy khách * có. đã chết. * * @throws quyền org.apache.hadoop.security.AccessControlException bị từ chối * @throws IOException Nếu xảy ra lỗi I/O */ @Idempotent void Renesas(String clientName) ném IOException; Thao tác NameNode nhẹ để kích hoạt khôi phục hợp đồng thuê * * @param src đường dẫn của tệp để bắt đầu khôi phục hợp đồng thuê * @param clientName tên của khách hàng hiện tại * @return true nếu tệp đã bị đóng * @throws IOException */ @Idempotent boolean recoveryLease(String src, String clientName) ném IOException; /** * Các hằng số để lập chỉ mục mảng thống kê tổng hợp được trả về bởi * {@link #getStats()}. */ int GET_STATS_CAPACITY_IDX = 0; int GET_STATS_USED_IDX = 1; GET_STATS_REMAINING_IDX = 2; /** * Thay vào đó hãy sử dụng {@link #GET_STATS_LOW_REDUNDANCY_IDX} */ @Deprecated int GET_STATS_UNDER_REPLICATED_IDX = 3; int GET_STATS_MISSING_BLOCKS_IDX = 5; int GET_STATS_MISSING_REPL_ONE_BLOCKS_IDX = 6; int GET_STATS_BYTES_IN_FUTURE_BLOCKS_IDX = 7; int GET_STATS_PENDING_DELETION_BLOCKS_IDX = 8; /** * Nhận một loạt số liệu thống kê tổng hợp kết hợp các khối thuộc cả hai loại * {@link BlockType#CONTIGUOUS} và {@link BlockType#STRIPED} trong hệ thống tệp * Sử dụng các hằng số công khai như {@link #GET_STATS_CAPACITY_IDX} thay cho *. số thực tế để lập chỉ mục vào mảng.[1] chứa tổng dung lượng đã sử dụng của hệ thống. hệ thống, tính bằng byte. *[2] chứa dung lượng lưu trữ khả dụng của hệ thống, tính bằng byte. *[3] chứa số lượng khối dự phòng thấp trong hệ thống.< /li> * [4] chứa số khối bị hỏng *[5] chứa số khối không còn bản sao tốt nào *[6] chứa số. trong số các khối có hệ số sao chép * 1 và đã mất bản sao duy nhất. *[7] chứa số byte có nguy cơ bị xóa *[8] chứa số khối đang chờ xóa * * / @Idempotent @ReadOnly long[] getStats() ném IOException; /** * Nhận số liệu thống kê liên quan đến các khối thuộc loại {@link BlockType#CONTIGUOUS} * trong hệ thống tệp */ @Idempotent. @ReadOnly ReplicatedBlockStats getReplicatedBlockStats() ném IOException; /** * Nhận số liệu thống kê liên quan đến các khối loại {@link BlockType#STRIPED} * trong hệ thống tệp.*/ @Idempotent @ReadOnly ECBlockGroupStats getECBlockGroupStats() ném IOException; * Nhận báo cáo về các nút dữ liệu hiện tại của hệ thống * Một đối tượng DatanodeInfo được trả về cho mỗi DataNode * Trả về các nút dữ liệu trực tiếp nếu loại là TRỰC TIẾP; CHẾT; * nếu không thì tất cả các nút dữ liệu nếu loại là TẤT CẢ */ @Idempotent @ReadOnly. DatanodeInfo[] getDatanodeReport(HdfsConstants.DatanodeReportType type) ném IOException; /** * Nhận báo cáo về kho lưu trữ nút dữ liệu hiện tại */ @Idempotent @ReadOnly DatanodeStorageReport[] getDatanodeStorageReport(HdfsConstants.DatanodeReportType type) ném IOException; kích thước khối cho tập tin nhất định. * @param tên tệp Tên của tệp * @return Số byte trong mỗi khối * @throws IOException * @throws org.apache.hadoop.fs.UnresolvedLinkException nếu đường dẫn chứa * một liên kết tượng trưng */ @Idempotent @ReadOnly( isCoordine = true) long getPreferredBlockSize(String filename) ném IOException; /** * Vào, thoát hoặc vào chế độ an toàn.* Chế độ an toàn là trạng thái nút tên khi nó *
* *
- không chấp nhận các thay đổi đối với không gian tên (chỉ đọc) và
*- không sao chép hoặc xóa các khối.< /li>
* Chế độ an toàn được nhập tự động khi khởi động nút tên * Chế độ an toàn cũng có thể được nhập thủ công bằng cách sử dụng * {@link #setSafeMode(HdfsConstants.SafeModeAction,boolean) * setSafeMode(SafeModeAction.SAFEMODE_ENTER,false)}. *
* Khi khởi động, nút tên chấp nhận các báo cáo nút dữ liệu thu thập * thông tin về các vị trí khối. * Để thoát khỏi chế độ an toàn, nó cần thu thập một tỷ lệ phần trăm * có thể định cấu hình được gọi là ngưỡng của các khối. , thỏa mãn điều kiện sao chép * tối thiểu * Điều kiện sao chép tối thiểu là mỗi khối phải có ít nhất * bản sao {@code dfs.namenode.replication.min} * Khi đạt đến ngưỡng. nút tên mở rộng chế độ an toàn * trong một khoảng thời gian có thể định cấu hình * để cho phép các nút dữ liệu còn lại kiểm tra trước nó * sẽ bắt đầu sao chép các khối bị thiếu * Sau đó, nút tên sẽ rời khỏi chế độ an toàn. được bật thủ công bằng cách sử dụng * {@link #setSafeMode(HdfsConstants.SafeModeAction,boolean) * setSafeMode(SafeModeAction.SAFEMODE_ENTER,false)} * thì nút tên vẫn giữ nguyên ở chế độ an toàn cho đến khi tắt thủ công * sử dụng {@link #setSafeMode(HdfsConstants.SafeModeAction,boolean) * setSafeMode(SafeModeAction.SAFEMODE_LEAVE,false)} * Có thể xác minh trạng thái hiện tại của nút tên bằng * {@link #. setSafeMode(HdfsConstants.SafeModeAction,boolean) * setSafeMode(SafeModeAction.SAFEMODE_GET,false)} * *
Tham số cấu hình:
* {@code dfs.safemode.threshold.pct} là tham số ngưỡng.
* { @code dfs.safemode.extension} là tham số tiện ích mở rộng chế độ an toàn.
* {@code dfs.namenode.replication.min} là tham số tối thiểu tham số sao chép.Trường hợp đặc biệt:
* Nút tên không vào chế độ an toàn khi khởi động nếu ngưỡng * được đặt thành 0 hoặc nếu không gian tên trống.
* Nếu ngưỡng được đặt thành 1 thì tất cả các khối cần phải có ít nhất * bản sao tối thiểu.
* Nếu giá trị ngưỡng lớn hơn 1 thì nút tên sẽ không * có thể tự động tắt chế độ an toàn.
* Chế độ an toàn luôn có thể được tắt theo cách thủ công *. * @param hành động* @param isChecked Nếu đúng thì hành động sẽ chỉ được thực hiện trong ActiveNN. * * @return
- 0 để lại an toàn mode;
*- 1 vào chế độ an toàn;
*- 2 nhận trạng thái chế độ an toàn.
* * @ném IOException * / @Idempotent boolean setSafeMode(HdfsConstants.SafeModeAction action, boolean isChecked) ném IOException; /** * Lưu hình ảnh vùng tên. * * @param timeWindow. NameNode thực hiện một điểm kiểm tra nếu điểm kiểm tra mới nhất * được thực hiện ngoài khoảng thời gian nhất định (tính bằng giây). NameNode thực hiện một điểm kiểm tra nếu khoảng cách giữa điểm kiểm tra * mới nhất và id giao dịch mới nhất lớn hơn khoảng cách này * * @return xem điểm kiểm tra bổ sung đã được thực hiện chưa * * @throws IOException nếu việc tạo hình ảnh không thành công */ @AtmostOnce boolean saveNamespace(long). timeWindow, txGap dài) ném IOException; /** * Cuộn nhật ký chỉnh sửa * Yêu cầu đặc quyền siêu người dùng. org.apache.hadoop.security.AccessControlException nếu đặc quyền siêu người dùng * bị vi phạm * @throws IOException nếu cuộn nhật ký không thành công * @return txid của phân đoạn mới */ @Idempotent long rollEdits() ném IOException; Vô hiệu hóa việc khôi phục bộ nhớ bị lỗi * *
- 0 nếu chế độ an toàn TẮT hoặc
*- 1 nếu chế độ an toàn BẬT.
* đặt cờ để cho phép khôi phục các bản sao bộ nhớ bị lỗi * * @throws. org.apache.hadoop.security.AccessControlException nếu đặc quyền superuser * bị vi phạm */ @Idempotent boolean RestoreFailedStorage(String arg) ném IOException; /** * Yêu cầu nút tên đọc lại máy chủ và loại trừ các tệp. / @Idempotent void RefreshNodes() ném IOException; /** * Hoàn tất nâng cấp trước đó * Xóa trạng thái hệ thống tệp. được lưu trong quá trình nâng cấp * Quá trình nâng cấp sẽ không thể đảo ngược được. */ @Idempotent void FinalizeUpgrade() ném ra IOException /** * Nhận trạng thái nâng cấp - đã hoàn tất hay không. nếu không có quá trình nâng cấp nào được thực hiện và * false nếu không thì * @throws IOException */ @Idempotent boolean nâng cấpStatus() ném IOException; hoạt động * @param hành động truy vấn, chuẩn bị hoặc hoàn thiện * @return thông tin nâng cấp cuộn Khi truy vấn, nếu không có quá trình nâng cấp nào, sẽ trả về giá trị rỗng.*/ @Idempotent RollingUpgradeInforollUpgrade(RollingUpgradeAction action) ném IOException; /** * @return CorruptFileBlocks, chứa danh sách các tệp bị hỏng (với * trùng lặp nếu có nhiều hơn một khối bị hỏng trong một tệp) * và một cookie * @throws IOException * * Mỗi lệnh gọi trả về một tập hợp con của các tệp bị hỏng trong hệ thống. Để có được * tất cả các tệp bị hỏng, hãy gọi phương thức này nhiều lần và mỗi lần chuyển vào * cookie. được trả về từ lệnh gọi trước đó */ @Idempotent @ReadOnly(isCoored = true) CorruptFileBlocks listCorruptFileBlocks(String path, String cookie) ném IOException; /** * Kết xuất cấu trúc dữ liệu nút tên vào tệp được chỉ định. . * * @throws IOException */ @Idempotent void metaSave(String filename) ném IOException; tất cả các nút dữ liệu để sử dụng giá trị băng thông mới, không liên tục cho * dfs.datanode.balance.bandwidthPerSec. ) ném IOException; /** * Lấy thông tin tệp cho một tệp hoặc thư mục cụ thể * @param src Biểu diễn chuỗi. của đường dẫn đến tệp * * Đối tượng @return chứa thông tin liên quan đến tệp * hoặc null nếu không tìm thấy tệp * @throws org.apache.hadoop.security.AccessControlException quyền bị từ chối * @throws java.io.FileNotFoundException tệp
src
không được tìm thấy * @throws org.apache.hadoop.fs.UnresolvedLinkException nếu đường dẫn chứa * một liên kết tượng trưng. IOException Nếu xảy ra lỗi I/O */ @Idempotent @ReadOnly(isCoorned = true) HdfsFileStatus getFileInfo(String src) ném IOException; * Nhận trạng thái đóng của một tệp. vào tệp * * @return trả về true nếu tệp bị đóng * @throws Quyền org.apache.hadoop.security.AccessControlException bị từ chối * Không tìm thấy @throws java.io.FileNotFoundException tệpsrc
* @throws org.apache.hadoop.fs.UnresolvedLinkException nếu đường dẫn chứa * một liên kết tượng trưng . * @throws IOException Nếu xảy ra lỗi I/O */ @Idempotent @ReadOnly(isCoorned = true) boolean isFileClosed(String src) ném IOException; /** * Lấy thông tin tệp cho một tệp hoặc thư mục cụ thể. Nếu đường dẫn * đề cập đến một liên kết tượng trưng thì FileStatus của liên kết tượng trưng sẽ được trả về. đường dẫn đến tệp * * @return đối tượng chứa thông tin liên quan đến tệp * hoặc null nếu không tìm thấy tệp * * @throws Quyền org.apache.hadoop.security.AccessControlException bị từ chối * @throws org.apache.hadoop.fs.UnresolvedLinkException ifsrc
* chứa một liên kết tượng trưng * @throws IOException Nếu xảy ra lỗi I/O */ @ Idempotent @ReadOnly(isCoored = true) HdfsFileStatus getFileLinkInfo(String src) ném IOException; /** * Nhận thông tin tệp cho một tệp hoặc thư mục cụ thể bằng * {@link LocationBlocks}.* @param src Biểu diễn chuỗi của đường dẫn đến tệp * @param needBlockToken Tạo mã thông báo khối cho {@link LocationBlocks} * Đối tượng @return chứa thông tin liên quan đến tệp * hoặc null nếu không tìm thấy tệp * @throws org.apache.hadoop Quyền .security.AccessControlException bị từ chối * không tìm thấy @throws java.io.FileNotFoundException tệpsrc
* @throws IOException Nếu xảy ra lỗi I/O */ @Idempotent @ReadOnly(isCoordined = true) HdfsLocatedFileStatus getLocatedFileInfo(String src, boolean needBlockToken) ném IOException /** * Lấy {@link ContentSummary} bắt nguồn từ thư mục đã chỉ định. path Biểu diễn chuỗi của đường dẫn * * @throws Quyền org.apache.hadoop.security.AccessControlException bị từ chối * @throws java.io.FileNotFoundException tệpđường dẫn
không được tìm thấy * @throws org.apache.hadoop.fs.UnresolvedLinkException nếuđường dẫn
code> * chứa một liên kết tượng trưng * @throws IOException Nếu xảy ra lỗi I/O */ @Idempotent @ReadOnly(isCoorden = true) ContentSummary getContentSummary(String path) ném IOException; /** * Đặt hạn ngạch cho một thư mục * @param path Biểu diễn chuỗi của đường dẫn đến thư mục * @param namespaceQuota Giới hạn số lượng tên. trong cây gốc * tại thư mục * @param storagespaceQuota Giới hạn dung lượng lưu trữ chiếm tất cả các tệp * trong thư mục này * @param gõ StorageType mà hạn ngạch dung lượng dự định được đặt. bật * Nó có thể là null khi được gọi bằng hạn ngạch không gian/không gian tên truyền thống. Khi loại không phải là rỗng, tham số storagespaceQuota * dành cho loại được chỉ định và namespaceQuota phải là * {@link HdfsConstants#QUOTA_DONT_SET}.
* * Hạn ngạch có thể có ba loại giá trị: (1) 0 trở lên sẽ đặt * hạn ngạch thành giá trị đó, (2) {@link HdfsConstants#QUOTA_DONT_SET} ngụ ý * hạn ngạch sẽ không thay đổi và (3) {@link HdfsConstants#QUOTA_RESET} * ngụ ý hạn ngạch sẽ được đặt lại. Bất kỳ giá trị nào khác đều là lỗi thời gian chạy. quyền security.AccessControlException bị từ chối * @throws tệp java.io.FileNotFoundExceptionđường dẫn
không tìm thấy * @throws QuotaExceededException nếu kích thước thư mục * lớn hơn hạn ngạch đã cho * @throws org.apache.hadoop.fs.UnresolvedLinkException nếu *path
chứa liên kết tượng trưng. đường dẫn nằm trong ảnh chụp nhanh RO * @throws IOException Nếu xảy ra lỗi I/O */ @Idempotent void setQuota(String path, long namespaceQuota, long storageQuota, loại StorageType) ném IOException; /** * Ghi tất cả siêu dữ liệu cho tệp này vào bộ lưu trữ liên tục. * Tệp hiện phải được mở để ghi. param inodeId ID inode hoặc GRANDFATHER_INODE_ID nếu máy khách * quá cũ để hỗ trợ fsync với ID inode.* @param client Biểu diễn chuỗi của máy khách * @param LastBlockLength Độ dài của khối cuối cùng (đang được xây dựng) * được báo cáo cho NameNode * @throws org.apache.hadoop.security.AccessControlException quyền bị từ chối * @throws java.io Không tìm thấy tệp .FileNotFoundExceptionsrc
* @throws org.apache.hadoop.fs.UnresolvedLinkException ifsrc
* chứa một liên kết tượng trưng * @throws IOException Nếu xảy ra lỗi I/O */ @Idempotent void fsync(String src, long inodeId, String client, long LastBlockLength) ném IOException; * Đặt thời gian sửa đổi và truy cập của tệp theo thời gian đã chỉ định * @param src Biểu diễn chuỗi của đường dẫn * @param mtime Số lượng. mili giây kể từ ngày 1 tháng 1 năm 1970. * Đặt thời gian âm có nghĩa là thời gian sửa đổi không nên * được đặt bởi lệnh gọi này * * @param atime Số mili giây kể từ ngày 1 tháng 1 năm 1970. * Đặt thời gian âm có nghĩa là thời gian truy cập không nên * đặt. bởi lệnh gọi này * * @throws quyền org.apache.hadoop.security.AccessControlException bị từ chối * @throws java.io.FileNotFoundException không tìm thấy tệpsrc
* @throws org.apache.hadoop.fs.UnresolvedLinkException nếusrc
* chứa liên kết tượng trưng. * @throws SnapshotAccessControlException nếu đường dẫn nằm trong ảnh chụp nhanh RO * @ ném IOException Nếu xảy ra lỗi I/O */ @Idempotent void setTimes(String src, long mtime, long atime) ném IOException; /** * Tạo liên kết tượng trưng đến một tệp hoặc thư mục * @param target Đường dẫn đích mà liên kết * trỏ tới. Đường dẫn của liên kết được tạo. tạo thư mục gốc * @param createParent - nếu đúng thì các thư mục gốc bị thiếu sẽ được tạo * nếu sai thì thư mục gốc phải tồn tại * * @throws quyền org.apache.hadoop.security.AccessControlException bị từ chối * @throws org.apache.hadoop.fs.FileAlreadyExistsException Nếu tệp *link
đã tồn tại * @throws java.io.FileNotFoundException Nếu cha củalink
không tồn tại vàcreateParent
là sai * @throws org.apache.hadoop.fs.ParentNotDirectoryException Nếu cha của *link
không phải một thư mục. * @throws org.apache.hadoop.fs.UnresolvedLinkException nếulink
* chứa một liên kết tượng trưng. * @throws SnapshotAccessControlException nếu đường dẫn nằm trong ảnh chụp nhanh RO * @throws IOException Nếu xảy ra lỗi I/O. */ @AtmostOnce void createSymlink(String target, String link, FsPermission dirPerm, boolean createParent) ném IOException; /** * Trả về mục tiêu của liên kết tượng trưng * đã cho trong đường dẫn (tức là một liên kết tượng trưng dẫn đến thành phần đường dẫn cuối cùng) * thì đường dẫn đã cho sẽ được trả về với liên kết tượng trưng này được giải quyết. @param path Đường dẫn có liên kết cần phân giải * @return Đường dẫn sau khi giải quyết liên kết tượng trưng đầu tiên trong đường dẫn.* @throws org.apache.hadoop.security.AccessControlException bị từ chối quyền * @throws java.io.FileNotFoundException Nếuđường dẫn
không tồn tại * @throws IOException Nếu đường dẫn đã cho không tham chiếu đến một liên kết tượng trưng * hoặc đã xảy ra lỗi I/O */ @Idempotent @ReadOnly(isCoordined = true) String getLinkTarget(String path) ném IOException; /** * Nhận tem thế hệ mới cùng với mã thông báo truy cập cho * một khối đang được xây dựng * * Phương thức này chỉ được gọi khi khách hàng cần khôi phục một đường dẫn * bị lỗi hoặc thiết lập một đường ống để nối thêm vào một khối. * * @param chặn một khối * @param clientName tên của khách hàng * @return một khối được định vị bằng tem thế hệ mới và mã thông báo truy cập * @throws IOException nếu có lỗi xảy ra */ @Idempotent LocationBlock updateBlockForPipeline(ExtendsBlock block, String clientName) ném IOException; /** * Cập nhật đường dẫn cho một khối đang được xây dựng. * * @param clientName tên của khách hàng * @param oldChặn khối cũ * @param newBlock khối mới chứa khối mới. dấu tạo và độ dài * @param newNodes datanodes trong đường ống * @throws IOException nếu có lỗi xảy ra */ @AtmostOnce void updatePipeline(String clientName, ExtendedBlock oldBlock, ExtendedBlock newBlock, DatanodeID[] newNodes, String[] newStorageIDs) ném IOException; /** * Nhận Mã thông báo ủy quyền hợp lệ. TokengetDelegationToken(Trình đổi mới văn bản) gửi IOException; /** * Gia hạn mã thông báo ủy quyền hiện có * * Mã thông báo ủy quyền mã thông báo @param đã nhận được trước đó * @return thời gian hết hạn mới * @throws IOException */ @Idempotent mã thông báo gia hạn dàiDelegationToken(Token ) ném IOException; * * Hủy mã thông báo ủy quyền hiện có * * Mã thông báo ủy quyền mã thông báo @param * @throws IOException */ @Idempotent void. cancelDelegationToken(Token token) ném IOException; /** * @return khóa mã hóa để khách hàng có thể mã hóa dữ liệu được gửi qua * DataTransferProtocol đến/từ DataNodes. DataEncryptionKey getDataEncryptionKey() ném IOException; /** * Tạo ảnh chụp nhanh *. @param snapshotRoot đường dẫn đang được chụp nhanh * @param snapshotName tên của ảnh chụp nhanh được tạo * @return đường dẫn ảnh chụp nhanh */ @AtmostOnce String createSnapshot(String snapshotRoot, String snapshotName) ném IOException; một ảnh chụp nhanh cụ thể của một thư mục snapshottable * @param snapshotRoot Thư mục snapshottable * @param snapshotName Tên của ảnh chụp nhanh cho thư mục snapshottable * @throws IOException */ @AtmostOnce void deleteSnapshot(String snapshotRoot, String snapshotName) ném IOException /** * Đổi tên ảnh chụp nhanh;* @param snapshotRoot đường dẫn thư mục nơi ảnh chụp nhanh được chụp * @param snapshotOldName tên cũ của ảnh chụp nhanh * @param snapshotNewName tên mới của ảnh chụp nhanh * @throws IOException */ @AtmostOnce void đổi tênSnapshot(Chuỗi snapshotRoot, Chuỗi snapshotOldName, Chuỗi snapshotNewName) ném IOException; /** * Cho phép chụp nhanh trên một thư mục * @param snapshotRoot thư mục được chụp * @throws IOException trên lỗi */ @Idempotent void allowSnapshot(String snapshotRoot) ném IOException; /** * Không cho phép chụp nhanh trên một thư mục * @param snapshotRoot thư mục không cho phép chụp nhanh * @throws IOException do lỗi */ @Idempotent void disallowSnapshot(String snapshotRoot) ném IOException; /** * Nhận sự khác biệt giữa hai ảnh chụp nhanh hoặc giữa ảnh chụp nhanh và * cây hiện tại của một thư mục. snapshotRoot * đường dẫn đầy đủ của thư mục nơi các ảnh chụp nhanh được chụp * @param fromSnapshot * tên ảnh chụp nhanh của điểm từ. Null biểu thị * cây * @param toSnapshot * tên ảnh chụp nhanh của điểm tới. return Báo cáo khác biệt được biểu thị dưới dạng {@link SnapshotDiffReport} * * @throws IOException do lỗi */ @Idempotent @ReadOnly(isCoorden = true) SnapshotDiffReport. getSnapshotDiffReport(String snapshotRoot, String fromSnapshot, String toSnapshot) ném IOException; /** * Nhận sự khác biệt giữa hai ảnh chụp nhanh của một thư mục lặp đi lặp lại. tên của điểm từ Null biểu thị cây * hiện tại * @param toSnapshot * tên ảnh chụp nhanh của điểm tới Null biểu thị cây * hiện tại. * @param startPath * đường dẫn liên quan đến thư mục gốc có thể chụp nhanh từ đó quá trình tính toán * snapshotdiff cần bắt đầu qua nhiều cuộc gọi rpc * chỉ mục @param * chỉ mục trong danh sách đã tạo hoặc đã xóa của thư mục mà tại đó * quá trình tính toán snapshotdiff đã dừng trong lần cuối cùng cuộc gọi rpc * vì không có mục nào vượt quá giới hạn snapshotdiffentry. -1 * cho biết, quá trình tính toán snapshotdiff cần bắt đầu ngay * từ startPath được cung cấp. SnapshotDiffReport} * @throw IOException do lỗi */ @Idempotent @ReadOnly(isCoorned = true) SnapshotDiffReportListing getSnapshotDiffReportListing(String snapshotRoot, String fromSnapshot, String toSnapshot, byte[] startPath, int index) ném IOException; tới CacheManager chỉ thị A * * * @param. CacheDirectiveInfo cần được thêm vào * @param flags {@link CacheFlag} để sử dụng cho thao tác này * @return A CacheDirectiveInfo được liên kết với lệnh đã thêm * @throws IOException nếu không thể thêm lệnh này */ @AtmostOnce long addCacheDirective(CacheDirectiveInfo chỉ thị , cờ EnumSet ) ném IOException; /** * Sửa đổi CacheDirective trong CacheManager. * * @param cờ {@link CacheFlag} để sử dụng cho thao tác này.* @throw IOException nếu lệnh không thể sửa đổi được */ @AtmostOnce void modCacheDirective(CacheDirectiveInfo direct, EnumSet flags) ném IOException; /** * Xóa CacheDirectiveInfo khỏi CacheManager. @throws IOException nếu không thể xóa lệnh bộ đệm */ @AtmostOnce void RemoveCacheDirective(long id) ném IOException; /** * Liệt kê tập hợp các đường dẫn được lưu trong bộ nhớ cache của nhóm bộ nhớ đệm Tăng dần tìm nạp kết quả * từ máy chủ. gọi tới * listCacheDirectives. * @param filter Các tham số được sử dụng để lọc kết quả danh sách, * hoặc null để hiển thị tất cả các lệnh hiển thị cho chúng tôi. Đối tượng CacheDirectiveEntry */ @Idempotent @ReadOnly(isCobbeded = true) BatchedEntries listCacheDirectives( long prevId, bộ lọc CacheDirectiveInfo) ném IOException /** * Thêm một nhóm bộ đệm mới. * @throws IOException Nếu yêu cầu không thể hoàn thành */ @AtmostOnce void. addCachePool(CachePoolInfo info) ném IOException; /** * Sửa đổi nhóm bộ đệm hiện có. */ @AtmostOnce void. sửa đổiCachePool(CachePoolInfo req) ném IOException; /** * Xóa nhóm bộ đệm. @throws IOException nếu nhóm bộ đệm không tồn tại hoặc không thể xóa */ @AtmostOnce void RemoveCachePool(String pool) ném IOException; /** * Liệt kê tập hợp các nhóm bộ đệm. * @param prevPool tên của nhóm cuối cùng được liệt kê hoặc chuỗi trống nếu đây * là lệnh gọi đầu tiên của listCachePools * @return Một loạt CachePoolEntry */ @Idempotent @ReadOnly(isCoorden = true) BatchedEntries listCachePools(String prevPool) ném IOException; /** * Sửa đổi các mục ACL của tệp và thư mục. Phương thức này có thể thêm các mục ACL * mới hoặc sửa đổi các quyền trên. Các mục nhập ACL hiện có Tất cả các mục nhập * ACL hiện có không được chỉ định trong lệnh gọi này sẽ được giữ lại mà không có thay đổi * (Các sửa đổi được hợp nhất vào tệp. ACL hiện tại.) */ @Idempotent void ModifyAclEntries(String src, List aclSpec) ném IOException; /** * Xóa các mục ACL khỏi các tệp và thư mục * được giữ lại */ @Idempotent void RemoveAclEntries(String). src, List aclSpec) ném IOException; /** * Xóa tất cả các mục ACL mặc định khỏi tệp và các thư mục */ @Idempotent void RemoveDefaultAcl(String src) ném IOException; * Xóa tất cả trừ các mục ACL cơ bản của các tệp và thư mục. Các mục * cho người dùng, nhóm và các mục khác được giữ lại để tương thích với các bit quyền. */ @Idempotent void RemoveAcl(String src) ném IOException; /** * Thay thế hoàn toàn ACL của các tệp và thư mục,loại bỏ tất cả các mục nhập * hiện có */ @Idempotent void setAcl(String src, List aclSpec) ném IOException; /** * Lấy ACL của các tệp và thư mục */ @Idempotent @ReadOnly(isCoorned = true) AclStatus getAclStatus. (String src) ném IOException; /** * Tạo vùng mã hóa */ @AtmostOnce void. createEncryptionZone(String src, String keyName) ném IOException; /** * Lấy vùng mã hóa cho một đường dẫn */ @Idempotent @ReadOnly(isCoorned = true) EncryptionZone getEZForPath(String src) ném IOException; danh sách theo nhóm dựa trên con trỏ của {@link EncryptionZone}. ID trước đó của @param. mục cuối cùng trong lô trước. Nếu không có * lô trước, có thể sử dụng giá trị âm * @return Lô vùng mã hóa */ @Idempotent @ReadOnly(isCoordined = true) BatchedEntries listEncryptionZones( long prevId) ném IOException; /** * Được sử dụng để thực hiện mã hóa lại các vùng mã hóa. * * @param khoanh vùng mã hóa để mã hóa lại *. @param thực hiện hành động mã hóa lại */throws IOException */ @AtmostOnce void reencryptEncryptionZone(String Zone, ReencryptAction action) ném IOException /** * Được sử dụng để triển khai danh sách theo nhóm dựa trên con trỏ của * {@link ZoneReencryptionStatus} s. * * @param prevId ID của mục cuối cùng trong lô trước đó. Nếu không có * lô trước đó, giá trị âm. có thể được sử dụng. * @return Hàng loạt vùng mã hóa * @throws IOException */ @Idempotent @ReadOnly(isCoordined = true) BatchedEntries listReencryptionStatus(long prevId) ném IOException; . * Tên phải có tiền tố là không gian tên theo sau là "." Ví dụ: *. "user.attr". * * Tham khảo tài liệu người dùng thuộc tính mở rộng HDFS để biết chi tiết * * @param src tệp hoặc thư mục * @param xAttr
XAttr
để đặt cờ đặt cờ * @param. * @throws IOException */ @AtmostOnce void setXAttr(String src, XAttr xAttr, EnumSetflag) ném IOException /** * Nhận xattrs của một tệp hoặc thư mục. Các giá trị trong tham số xAttrs bị bỏ qua * Nếu xAttrs rỗng hoặc trống, điều này cũng giống như lấy tất cả xattrs của tệp * hoặc thư mục. người dùng có * quyền xem được trả về. * * Tham khảo tài liệu người dùng thuộc tính mở rộng HDFS để biết chi tiết. Danh sách
XAttr
* @throws IOException */ @Idempotent @ReadOnly(isCoordined = true) ListgetXAttrs(String src, List xAttrs) ném IOException /** * Liệt kê tên xattrs; đối với một tập tin hoặc thư mục * Chỉ những tên xattr mà người dùng đã đăng nhập mới có quyền truy cập * * *. Tham khảo tài liệu người dùng thuộc tính mở rộng HDFS để biết chi tiết.* * @param src tệp hoặc thư mục * danh sách @return
XAttr
* @throws IOException */ @Idempotent @ReadOnly(isCoordened = true) ListlistXAttrs(String src) ném IOException /** * Loại bỏ xattr của một tập tin hoặc thư mục. Giá trị trong tham số xAttr bị bỏ qua * Tên phải có tiền tố là không gian tên theo sau. ".". Ví dụ: * "user.attr". * * Tham khảo tài liệu người dùng thuộc tính mở rộng HDFS để biết chi tiết. để xóa * @throws IOException */ @AtmostOnce void RemoveXAttr(String src, XAttr xAttr) ném IOException; /** * Kiểm tra xem người dùng có thể truy cập vào một đường dẫn hay không. chỉ định quyền truy cập * nào sẽ được thực hiện. Nếu các quyền được yêu cầu được cấp thì phương thức * sẽ trả về bình thường. Nếu quyền truy cập bị từ chối thì phương thức này sẽ đưa ra * {@link org.apache.hadoop.security.AccessControlException}. , các ứng dụng nên tránh sử dụng phương pháp này do có nguy cơ xảy ra * điều kiện xung đột về thời gian kiểm tra/thời gian sử dụng. Các quyền trên một tệp có thể * thay đổi ngay sau khi lệnh gọi truy cập quay trở lại. kiểm tra* @param loại quyền truy cập để kiểm tra * @throws org.apache.hadoop.security.AccessControlException nếu quyền truy cập bị * bị từ chối * @throws java.io.FileNotFoundException nếu đường dẫn không tồn tại * @throws IOException xem cách triển khai cụ thể */ @Idempotent @ReadOnly(isCoorned = true) void checkAccess(String path, FsAction mode) ném IOException /** * Nhận txid cao nhất mà NameNode biết đã được ghi vào nhật ký chỉnh sửa * hoặc -1 nếu nhật ký chỉnh sửa của NameNode chưa mở để ghi. Được sử dụng làm * điểm bắt đầu cho luồng sự kiện inotify */ @Idempotent @ReadOnly(isCoorded =. true) long getCurrentEditLogTxid() ném IOException; /** * Nhận danh sách có thứ tự các lô sự kiện tương ứng với các giao dịch nhật ký chỉnh sửa * cho các txid bằng hoặc lớn hơn txid. */ @Idempotent @ReadOnly(isCoordined = true) EventBatchList getEditsFromTxid(long txid) ném IOException; /** * Đặt chính sách mã hóa xóa trên một đường dẫn được chỉ định. * @param ecPolicyName Tên chính sách mã hóa xóa */ @AtmostOnce void setErasureCodingPolicy(String. src, String ecPolicyName) ném IOException; /** * Thêm chính sách mã hóa Xóa vào HDFS. Đối với mỗi đầu vào chính sách, lược đồ và * cellSize là bắt buộc, tên và id sẽ được Namenode tự động * tạo và gán sau khi chính sách. được thêm thành công và * sẽ được trả về trong phản hồi. chính sách @param Danh sách chính sách ec do người dùng xác định để thêm. IOException */ @AtmostOnce AddErasureCodingPolicyResponse[] addErasureCodingPolicies( ErasureCodingPolicy[]policy) ném IOException; /** * Xóa chính sách mã hóa xóa.* @throws IOException */ @AtmostOnce void RemoveErasureCodingPolicy(String ecPolicyName) ném IOException; /** * Kích hoạt chính sách mã hóa xóa * @param ecPolicyName Tên của chính sách sẽ được kích hoạt. Chuỗi ecPolicyName) ném IOException; Vô hiệu hóa chính sách mã hóa xóa. * @param ecPolicyName Tên của chính sách bị vô hiệu hóa * @throws IOException */ @AtmostOnce void vô hiệu hóaErasureCodingPolicy(String ecPolicyName) ném IOException /** * Tải các chính sách mã hóa xóa trong Namenode, ngoại trừ REPLICATION; * chính sách. * * @ném IOException */ @Idempotent @ReadOnly(isCoordine = true) ErasureCodingPolicyInfo[] getErasureCodingPolicies() ném IOException; /** * Lấy codec mã hóa xóa được tải trong Namenode. > getErasureCodingCodecs() ném IOException; /** * Nhận thông tin về chính sách EC cho đường dẫn. Null sẽ được trả về * nếu thư mục hoặc tệp có chính sách REPLICATION. (Chuỗi src) ném IOException; /** * Bỏ đặt chính sách mã hóa xóa khỏi một đường dẫn được chỉ định. src Đường dẫn đến chính sách không được đặt. */ @AtmostOnce void unsetErasureCodingPolicy(String src) ném IOException; /** * Xác minh xem các chính sách đã cho có được hỗ trợ trong thiết lập cụm nhất định không. @param PolicyNames tên của chính sách * @return kết quả nếu các chính sách đã cho được hỗ trợ trong thiết lập cụm * @throws IOException */ @Idempotent @ReadOnly ECTopologyVerifierResult getECTopologyResultForPolicies(String... PolicyNames) ném IOException; /** * Nhận {@link QuotaUsage} được root tại thư mục được chỉ định. thông tin * về việc sử dụng hạn ngạch và do đó, mặc dù đây là ReadOnly, nó chỉ có thể được * chuyển hướng đến nút tên đang hoạt động. @param path Biểu diễn chuỗi của đường dẫn * * @throws Quyền AccessControlException bị từ chối * @throws java.io.FileNotFoundException tệp
path
không được tìm thấy * @throws org.apache.hadoop.fs.UnresolvedLinkException if < code>path * chứa một liên kết tượng trưng * @throws IOException Nếu xảy ra lỗi I/O */ @Idempotent @ReadOnly(activeOnly = true) QuotaUsage getQuotaUsage(String path) ném IOException; /** * Liệt kê các tệp đang mở trong hệ thống theo lô. ID Inode là con trỏ và các tệp * đang mở được trả về trong một lô sẽ có id Inode lớn hơn. * Inode con trỏ chỉ có thể được yêu cầu bởi người dùng cấp cao và * danh sách theo các đợt không phải là nguyên tử. con trỏ INode id.* @throws IOException */ @Idempotent @Deprecated @ReadOnly(isCoordined = true) BatchedEntrieslistOpenFiles(long prevId) ném IOException; /** * Liệt kê các tệp đang mở trong hệ thống theo lô. mở các tệp được trả về trong một đợt sẽ có id INode lớn hơn * id con trỏ INode chỉ có thể mở tệp. được yêu cầu bởi siêu người dùng và * danh sách theo từng đợt không phải là nguyên tử. * @param trước ID con trỏ. * @param openFilesTypes để lọc các tệp đang mở. ném IOException */ @Idempotent @ReadOnly(isCoordined = true) BatchedEntries listOpenFiles(long prevId, EnumSet openFilesTypes, String path) ném IOException; /** * Nhận trạng thái dịch vụ HA của máy chủ * @throws IOException */ @Idempotent @ReadOnly HAServiceProtocol.HAServiceState getHAServiceState() ném IOException; /** * Được máy khách gọi để đợi cho đến khi máy chủ đạt trạng thái id của máy khách *. id được cung cấp bởi bối cảnh căn chỉnh phía máy khách và phía máy chủ *. Đây có thể là một cuộc gọi chặn IOException */ @Idempotent @ReadOnly(activeOnly = true) void msync() ném IOException; chính sách lưu trữ cho một tệp/thư mục * @param path Đường dẫn của một tệp/thư mục hiện có. * @throws AccessControlException Nếu quyền truy cập bị từ chối. org.apache.hadoop.fs.UnresolvedLinkException nếu src
* chứa một liên kết tượng trưng. * * @throws java.io.FileNotFoundException Nếu không tìm thấy tệp/dirsrc
. ném org.apache.hadoop.hdfs.server.namenode.SafeModeException nối thêm không * được phép trong chế độ an toàn */ @AtmostOnce void. thoả mãnStoragePolicy(Đường dẫn chuỗi) ném IOException }* * @throws IOException */ @Idempotent @ReadOnly(activeOnly = true) void msync() ném IOException; * * Đáp ứng chính sách lưu trữ cho một tệp/thư mục. * Đường dẫn @param của tệp/thư mục hiện có *. @throws AccessControlException Nếu quyền truy cập bị từ chối * @throws org.apache.hadoop.fs.UnresolvedLinkException nếusrc
* chứa một liên kết tượng trưng * @throws java.io.FileNotFoundException Nếu không tìm thấy tệp/dirsrc
* @throws org.apache.hadoop.hdfs.server. .namenode.SafeModeException không được phép thêm * vào chế độ an toàn */ @AtmostOnce void thỏa mãnStoragePolicy(String path) ném IOException }* * @throws IOException */ @Idempotent @ReadOnly(activeOnly = true) void msync() ném IOException; * * Đáp ứng chính sách lưu trữ cho một tệp/thư mục. * Đường dẫn @param Đường dẫn của tệp/thư mục hiện có *. @throws AccessControlException Nếu quyền truy cập bị từ chối * @throws org.apache.hadoop.fs.UnresolvedLinkException nếusrc
* chứa một liên kết tượng trưng * @throws java.io.FileNotFoundException Nếu không tìm thấy tệp/dirsrc
* @throws org.apache.hadoop.hdfs.server. .namenode.SafeModeException không được phép nối thêm * trong chế độ an toàn */ @AtmostOnce void thỏa mãnStoragePolicy(String path) ném IOException }
Có rất nhiều phương pháp mà chúng tôi không thể phân tích từng phương pháp một. Chúng tôi có thể phân loại chúng thành các loại sau:
Có hai phương pháp trong ClientProtocol liên quan đến việc đọc tệp của máy khách: getBlockLocations() và reportBadBlocks().
Phương thức getBlockLocations() có thể lấy thông tin vị trí của tất cả các khối dữ liệu trong phạm vi thực thi của tệp HDFS. Các tham số của phương thức này là tên tệp và phạm vi đọc của tệp HDFS. của tất cả các khối dữ liệu trong phạm vi được chỉ định của tệp. Thông tin được gói gọn bằng đối tượng LocationBlocks. Thông tin vị trí của từng khối dữ liệu đề cập đến thông tin của tất cả các DataNode lưu trữ các bản sao của khối dữ liệu này. Các DataNodes này sẽ được sắp xếp theo khoảng cách từ máy khách hiện tại. Sau khi đọc thông tin vị trí, hãy đọc thông tin thực từ nút dữ liệu được trả về:
@Idempotent @ReadOnly(atimeAffected = true, isCoordine = true) LocationBlocks getBlockLocations(String src, long offset, long length) ném IOException;
Máy khách sẽ gọi phương thức reportBadBlocks() để báo cáo các khối dữ liệu sai tới NameNode. Khi máy khách đọc các khối dữ liệu từ nút dữ liệu và thấy rằng tổng kiểm tra của khối dữ liệu không chính xác, nó sẽ gọi phương thức này để báo cáo. dữ liệu sai vào thông tin Khối NameNode:
@Idempotent void reportBadBlocks(LocatedBlock[] block) ném IOException;
Một trong những phần quan trọng nhất của hoạt động máy khách HDFS là ghi vào tệp HDFS mới hoặc mở tệp HDFS hiện có và thực hiện thao tác ghi thêm. ClientProtocol xác định 8 phương pháp dễ hiểu để hỗ trợ các hoạt động ghi tệp HDFS: create(),append(), addBlock, Complete(), AbandonBlock(), getAddtionnalDatanodes(), updateBlockForPipeline() và updatePipeline().
HDFS là một hệ thống tệp logic trong Hadoop với kích thước khối là 64 MB. Các tệp trên HDFS lần lượt được lưu trên hệ thống tệp hệ điều hành cơ bản, chẳng hạn như ext4, với kích thước khối là 4KiB. Theo như tôi biết, đối với các tệp trên hệ thống tệp cục bộ, hệ điều hành
Công cụ nào là tốt nhất để đo mức tiêu thụ dung lượng HDFS? Khi tôi tóm tắt đầu ra của "hdfs dfs -du/", tôi luôn tiêu tốn ít dung lượng hơn so với "hdfs dfsadmin -report" (dòng ("DFS used"). Có ở đó không?
Tôi đang cố gắng viết một tập lệnh đơn giản để xác minh tổng kiểm tra HDFS và hệ thống tệp cục bộ. Trên HDFS tôi nhận được - [m@x01tbipapp3a ~]$ hadoop fs -checksum /user/m/fil
Tôi đã xóa một thư mục khỏi HDFS và tìm thấy nó trong /user/hdfs/.Trash/Current/ nhưng tôi không thể khôi phục nó. Tôi đã kiểm tra diễn đàn nhưng không tìm thấy giải pháp tốt. Xin vui lòng ai đó có một giải pháp cho tôi có thể giúp tôi làm thế nào để tận dụng tối đa
Chạy truy vấn quét lớn Presto trên cụm 5 nút, có vẻ như chỉ có một nút là điều phối viên truy vấn và đọc dữ liệu từ 5 nút hdfs qua mạng. Tất cả các quy trình trước đều chạy trên các nút dữ liệu. Có cách nào làm 5 phần không
Tôi có một tệp có tên file name(1).zip (có dấu cách và dấu ngoặc trong đó) và tôi muốn đặt tệp này trên HDFS. Nhưng mỗi lần tôi cố gắng đưa nó qua hadoop fs -put ... tôi lại gặp một ngoại lệ. Tôi làm gì
Chạy truy vấn quét lớn Presto trên cụm 5 nút, có vẻ như chỉ có một nút là điều phối viên truy vấn và đọc dữ liệu từ 5 nút hdfs qua mạng. Tất cả các quy trình trước đều chạy trên các nút dữ liệu. Có cách nào để có 5 nút sử dụng s
Vì vậy, tôi đã cài đặt Hadoop trên CentOS 5 thông qua Cloudera Manager cdh3u5. Khi tôi chạy cmd hadoop fs -ls/ tôi mong đợi thấy hdfs://localhos
Tôi đã chạy flume trên hadoop bằng lệnh flume-ng Agent -c conf -f conf/flume-twitter.conf -n TwitterAgent Bây giờ tôi không thể lưu dữ liệu twitter. nó cho thấy
Tôi đang sử dụng hai máy chủ (hadoop-coc-1 và hadoop-coc-2) để cố định cấu hình liên kết HDFS trong đó. Vì vậy, tôi đã định cấu hình $cat trong cả hai máy chủ (hadoop-coc-1 và hadoop-coc-2)
Tôi cần di chuyển (không sao chép) một số lượng lớn tệp từ thư mục hdfs này sang thư mục hdfs khác trong cùng một cụm. Tôi có thể sử dụng distcp nhưng có vẻ như quá mức cần thiết vì nó đang sao chép tệp (sao chép tệp) và tôi chỉ muốn di chuyển tệp đó. Hai câu hỏi: A
Khi tôi cố gắng sao chép một tệp từ thư mục cục bộ sang HDFS, tôi gặp lỗi sau: [cloudera@localhost ~]$ hadoop fs -copyFromLocal hello.txt /user/
Theo như tôi biết, không có tùy chọn trực tiếp nào để ghi đè lên các tệp trong HDFS khi di chuyển từ vị trí HDFS này sang vị trí HDFS khác, copy cp có tùy chọn để buộc nó. Tôi đang cố gắng tìm hiểu xem có hack nào có thể làm được điều này không? Những gì chúng ta có thể làm là hdfs dfs
Tôi có hai thiết lập HDFS và muốn sao chép (không di chuyển hoặc di chuyển) một số bảng từ HDFS1 sang HDFS2. Làm cách nào để sao chép dữ liệu từ HDFS này sang HDFS khác? Điều này có thể thực hiện được thông qua Sqoop hoặc dòng lệnh khác không? câu trả lời hay nhất
Không rõ liệu bạn có thể thực hiện fanout (sao chép) trong Kafka giống như trong Flume hay không. Tôi muốn Kafka lưu dữ liệu vào HDFS hoặc S3 và gửi bản sao của dữ liệu đó tới Storm để xử lý theo thời gian thực. Bão
Làm cách nào để đưa ra lệnh hdfs như một bước trong cụm EMR? Việc thêm các bước dưới dạng tác vụ script_runner.jar dường như không thành công. Câu trả lời hay nhất sử dụng command-runner.jar và hiển thị bash
Làm cách nào để đưa ra lệnh hdfs như một bước trong cụm EMR? Việc thêm các bước dưới dạng tác vụ script_runner.jar dường như không thành công. Câu trả lời hay nhất sử dụng command-runner.jar và hiển thị bash
Tôi mới sử dụng Hadoop và HDFS, vì vậy có thể tôi đã làm sai điều gì đó khi sao chép từ cục bộ (Ubuntu 10.04) sang HDFS trên một nút duy nhất trên localhost. Bản sao ban đầu hoạt động tốt, nhưng khi tôi sửa đổi thư mục đầu vào cục bộ của mình và
Từ thực tiễn của tôi với Hadoop HDFS, tôi hiểu rằng khi tạo người dùng nói u1 và cố gắng đưa các tệp từ hệ thống tệp cục bộ vào HDFS, nó sẽ tìm kiếm thư mục/user/u1 (theo mặc định) đã ghi vào hệ thống tệp HDFS
Mình muốn đưa file 70G vào hdfs nên mình dùng lệnh "put" để thực hiện việc này. Tuy nhiên, tôi nhận được ngoại lệ sau đây. Tôi đã thử lệnh tương tự cho các tệp có kích thước nhỏ và nó đã hoạt động. Có ai biết vấn đề là gì không? Cảm ơn bạn CẢNH BÁO [DataStre
Tôi là một lập trình viên xuất sắc, rất giỏi!