首页 文章 精选 留言 我的

精选列表

搜索[hadoop],共8437篇文章
优秀的个人博客,低调大师

正式生产环境下hadoop集群的DNS+NFS+ssh免password登陆配置

博客地址:http://www.loveweir.com/ 环境虚拟机centos6.5 主机名h1 IP 192.168.137.11 作为DNS FNS的server 主机名h2 IP 192.168.137.12 主机名h3 IP 192.168.137.13 建立DNS(为了代替集群改动hosts带来的大量反复工作) 1.安装DNS在h1上面 检查命令: rpm –q bind rpm -q bind-chroot 安装命令: yum -y install bind bind-chroot 2. 改动/etc/named.conf 主要改动这两个地方注意红色改动的部分 listen-on port 53 {any;}; allow-query {any; }; 文件全内容: // // named.conf // // Provided by Red Hat bind package to configure the ISCBIND named(8) DNS // server as a caching only nameserver (as a localhostDNS resolver only). // // See /usr/share/doc/bind*/sample/ for example namedconfiguration files. // options { listen-onport 53 {any; }; listen-on-v6port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query {any; }; recursionyes; dnssec-enableyes; dnssec-validationyes; dnssec-lookasideauto; /* Path toISC DLV key */ bindkeys-file"/etc/named.iscdlv.key"; managed-keys-directory"/var/named/dynamic"; }; logging { channeldefault_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file"named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; 3. 改动/etc/named.rfc1912.zones 正反配置红色部分 // named.rfc1912.zones: // // Provided by Red Hat caching-nameserver package // // ISC BIND named zone configuration for zonesrecommended by // RFC 1912 section 4.1 : localhost TLDs and addresszones // andhttp://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt // (c)2007 R W Franks // // See /usr/share/doc/bind*/sample/ for example namedconfiguration files. // zone "localhost.localdomain" IN { type master; file"named.localhost"; allow-update{ none; }; }; zone "localhost" IN { type master; file"named.localhost"; allow-update{ none; }; }; zone"1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa"IN { type master; file"named.loopback"; allow-update{ none; }; }; zone "1.0.0.127.in-addr.arpa" IN { type master; file"named.loopback"; allow-update{ none; }; }; zone "0.in-addr.arpa" IN { type master; file"named.empty"; allow-update{ none; }; }; zone "weir.com" IN { type master; file "weir.com.zone"; allow-update { none; }; }; zone "137.168.192.in-addr.arpa" IN { type master; file"137.168.192.in-addr.zone"; allow-update{ none; }; }; 4.在/var/named文件夹下创建weir.com.zone和137.168.192.in-addr.zon文件(这里非常重要每一个地方都要看清楚怎么设置) 这里是将named.localhost 拷贝之后做的改动 cp -p named.localhost weir.com.zone cp -p named.localhost 137.168.192.in-addr.zone weir.com.zone文件内容: $TTL 86400 @ IN SOAh1.weir.com. chizk.www.weir.com. ( 0 ; serial (d.adams) 1D ; refresh 1H ; retry 1W ; expiry 3H ) ; minimum @ IN NSh1.weir.com. h1.weir.com. IN A 192.168.137.11 h2.weir.com. IN A 192.168.137.12 h3.weir.com. IN A 192.168.137.13 h4.weir.com. IN A 192.168.137.14 h5.weir.com. IN A 192.168.137.15 h6.weir.com. IN A 192.168.137.16 137.168.192.in-addr.zone文件内容: $TTL 86400 @ IN SOA h1.weir.com. chizk.www.weir.com. ( 0 ; serial (d.adams) 1D ; refresh 1H ; retry 1W ; expiry 3H ) ; minimum @ IN NSh1.weir.com. 11 IN PTR h1.weir.com. 12 IN PTR h2.weir.com. 13 IN PTR h3.weir.com. 14 IN PTR h4.weir.com. 15 IN PTR h5.weir.com. 16 IN PTR h6.weir.com. 改动正向文件和反向文件属组 [root@h1 named]# chgrp named weir.com.rev [root@h1 named]# chgrp named weir.com.zone 5. 加入DNS域名serverip(这里注意改动/etc/resolv.conf是无用的,重新启动电脑就失效了) 先说h1电脑,由于是DNSserver所以我没有配置这一项 。这里可能与我的网络连接有关系 以下说其它节点都例如以下配置: 这里须要找到/etc/sysconfig/network-scripts/ifcfg-eth0 主要是增加DNS1=192.168.137.11 完整内容: DEVICE=eth0 TYPE=Ethernet UUID=5a32d5ab-af65-44bc-9d21-c757fb44add3 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none IPADDR=192.168.137.12 PREFIX=16 GATEWAY=192.168.137.1 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0" HWADDR=08:00:27:17:25:7F LAST_CONNECT=1402057925 DNS1=192.168.137.11 6.启动DNS(防火墙关闭) service named start 自己主动开启: 查看:chkconfig –listnamed 设置启动级别:chkconfig--level 123456 named on 7.測试: nslookup h1.weir.com nslookup 192.168.137.12 host h1.weir.com host 192.168.137.12 至此DNS配置完毕。 配置NFS rw 同意NFS卷上的读和写请求,默认是不同意不论什么请求,还能够使用ro选项 sync 仅在改动被提交到稳定的存储器后响应请求,在这个版本号及将来的版本号中,sync是默认的,假设须要async的话必须明白地指出。为了帮助系统管理员察觉到这个改变,假设既没有指定sync也没有指定async的话,“exportfs”将会给出一个警告信息 no_wdelay 假设设置了async这个选项就不起作用。正常情况下,假设NFSserver怀疑有还有一个相关的写请求正在处理或立即就要达到。NFSserver将略微延迟提交写请求到磁盘,这就同意使用一个操作提交多个写请求到磁盘。这样能够改善性能。假设NFSserver接收到的主要是些独立的小请求。这个行为的确会减少性能。因此可将no_wdelay关闭。默认能够是使用wdelay选项进行明白地请求 no_root_squash 从uid/gid 0到匿名的uid/gid的root_squash映射请求,no_root_squash关闭了root squashing insecure insecure选项同意NFSclient不使用NFS保留的port no_subtree_check 这个选项启用了subtree检查,这样就再加入了一层安全系数,可是在某些环境下不可靠。 假设文件系统的子文件夹被导出了,可是整个文件系统是不行的,server不但必须检查訪问的是适当的文件系统中的文件(非常easy)并且还要检查导出树中的文件(比較困难),这个检查就叫做subtree_check。 为了运行这个检查,server必须提供一些关于文件位置的信息。在訪问的文件被重命名且被一个client打开时可能引起问题。(在很多简单的实例中它仍然能够工作) 假设文件系统导出时使用了no_root_squash选项(參考以下的内容)。subtree检查还可用于确保文件夹内的文件仅仅有root有权訪问,即使文件本身同意很多其它的人訪问。 1.安装NFS 检查: rpm -qa | grep nfs rpm -qa | grep rpcbind 没有安装: yum install nfs-utils rpcbind 2.启动NFS 检查: service nfs status servicerpcbind status 启动: service nfs start 开机自启动: chkconfig --level 123456 nfs on chkconfig --level 123456 rpcbindon 3.设置共享文件夹 这里任意。比如:/home/gx 在/etc/exports 里面加入: /home/gx *(insecure,sync,rw,no_root_squash) 重新启动rpcbind和nfs service rpcbind restart service nfs restart 查看一下: showmount -elocalhost 4.其它节点(client) 建立挂载点。比方在根文件夹下mkdir/nfs_share 命令:mount -t nfs 192.168.137.11:/home/gx /nfs_share/ 測试:在h1上的文件夹下创建文件在其它节点是否看得到 5开机自己主动挂载nfs共享文件夹 改动/etc/fstab文件 在最后增加: 192.168.137.11:/home/gx /nfs_share nfs defaults 1 1 # # /etc/fstab # Created by anaconda on Tue May 27 12:29:32 2014 # # Accessible filesystems, by reference, are maintainedunder '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/orblkid(8) for more info # /dev/mapper/vg_weir-lv_root / ext4 defaults 1 1 UUID=4ea6963a-f2cd-4391-8808-d6bd76ee1125 /boot ext4 defaults 1 2 /dev/mapper/vg_weir-lv_swap swap swap defaults 0 0 tmpfs/dev/shm tmpfs defaults 0 0 devpts/dev/ptsdevpts gid=5,mode=620 0 0 sysfs/sys sysfs defaults 0 0 proc/proc proc defaults 0 0 192.168.137.11:/home/gx /nfs_share nfs defaults 1 1 至此NFS配置完毕。 6.实现nfs共享ssh密钥 这里须要了解ssh免password登陆的原理。 我大致简单说一下: ssh-keygen-trsa 产生私钥和公钥。id_rsa(私钥)和id_rsa.pub(公钥) 比方:h1电脑须要免password登陆到h2电脑,须要在h1上面的~/.ssh/里面产生私钥和公钥 将公钥复制到h2的~/.ssh/里面而且改动名字为authorized_keys。 这样就能够用ssh 192.168.137.12 登录到h2电脑里面 第一次会提示输入password。之后就不会了。 假设想实现相互免password登陆那就是在h2上面产生公钥私钥 ,把公钥复制到h1上面 假设想实现h1到h1的免password登陆就直接拷贝公钥在自己的~/.ssh/下并取名为authorized_keys。 那么我们怎么实现nfs共享文件夹的办法来实现ssh免password登陆呢? 事实上就是把各自的公钥放在共享文件夹里面,然后让不同的机器节点来共享文件夹 里面拿公钥到自己的~/.ssh/文件夹以下就能够做到了。这样能够省去一些反复的操作。 这里有一种方式叫做链接文件命令:ln 有软连接和硬链接之分 这里最方便的做法是在h1的共享文件夹里面建立authorized_keys文件把全部节点的公钥信息都放在这里。不断累加。仅仅要有一台电脑连进来就添加这个公钥文件和新电脑的软连接设置。其它节点都不须要去配置为能够实现全部节点的ssh免password登陆。 我想分析到这里大家已经能够自己完毕了。 须要做的是: 1.软连接建立 2.把新加电脑产生的公钥追加给共享文件夹的authorized_keys文件里就可以 眼下问题点: 软连接ssh免password登陆不成功,仍然要求输入password,不知道是我配置问题。还是什么问题。我的做法是: 将h2,h3上面的公钥加到h1de的~/.ssh/authorized_keys上面 ssh h2.weir.com cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ssh h3.weir.com cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 内容为: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwkLRj4s+OXY7y8W9/3MOaMGMxE3M37/ySm28gwSpxs4AibAPjZY9rXvld5fJWl99iVeLMTRn39cryXknqf7gqy32EZ6kledh5Au7kv96XX3Cbwr5YIWoTggo9q9tG8E7J268QpV/2Zi1lOM6EEnLPUfpU6UWW2l8Ay4a2AyrWoIs2s6ffqPc/5xOnOnvAAmc285P75UmG0Cr/BVapdMi7z5WUUioPb3qGdXmirNy4EFUPtFMyXO3SwZIea61UpPLN6hcPDliluU+SwyVjkpicPUZcN/wweXkhQN/rexsbvNJ1qlD1DC1qT9eryj5b/i8RCWHGhxhlxvqlTxxmUpGMQ== root@h1 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAufPOnaaBhOgLepshNFTsUROGv0BZFCyqOK3rl+nr02YC5bk/I0K4kfnrJcTMgtE7CPYnjzPzpQLTKDYpu9Qv2XQkxadKe3FsWoihnRz4+ZLaL5QdlKwM8CNNDvYXnULwUh7ZyyEAxT+50WkIzVL+aVz4nbynOw6oJHyg492tU/lkytRPSTn0ogAH10QGqOGzKMLoFSiE5ce6acNrck79ya4R13k6y6XiJYjlfkfU+QbKw9vtZcVWN9LpygfYeQWZOv6vYA/XRk2ZZspwYs+lGQq7vdJTIxLW/SbS9qV5nJUYzVMDeG34rYJpZaM6FQ7TPxrQt00oPXBOL45Lf5fadQ== root@h2 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtND3Kbx2fVg3dZfwQFxBdC1xmVX+gv9mfbUW5C2g+NYwxYR+yGSQQo43AjWcCz+HR2IyP4zijPpuY6x/9EObi5GUjQ5GvZiO/dWMUajMv2TbV92Y0/utgEaT301hQY2/UjlY9pheATZSBDk3X66pXq/kf0aYu7Wf2JULpBdilq711KHHgCRuHwNfduCwxhmw0mqx8i2SbCvbgHaEEmD8liqOQB0VOD2RWvUCSqaT4pnBhH0XWULUkO+VepzL4bup0LlCl88T2LF3Rso+g7k6rRBwoVoHGG8KQtVXPy33pcM7BIXxqFsQVrn7QYe09uBZS/BZj0e7bzCos1nBAb0+Gw== root@weir ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtZN3yCKaxw7ysWqU5KjgjVfn+YqA4rP80rWwc5d2GLPBA7Kj2JuxUIuRBVTEAO4sir2TU4tDNrX5EVu7WZPmv3Z5w2hj4nnJhusHZo477qAwufE9G9cqJkc2Wuci+tiMp7beal1fDvE8guqy8IJCJuLInGWbvSuVToDcZiCazYg4vlMaB5J8xuNhcNpt7w665+YA2f7Bms9qylbQJnsmU95CSqnRKZag9OioOWrgPn/WjS93n/qMBIz3jWJeOiCi9jeg5zsYTxljfMQF+05NTg8tNZGGxweuR5dVFm7yHNfp4Gosj4Jhz7ZlFASRQe/q4cGc5EEQUzire4Qy7XQoGQ== root@h3 同一时候将h2,h3上面的公钥加到h1de的共享文件夹/home/gx/.ssh/authorized_keys上面 ssh h2.weir.com cat ~/.ssh/id_rsa.pub >>/home/gx/.ssh/authorized_keys ssh h3.weir.com cat ~/.ssh/id_rsa.pub >>/home/gx/.ssh/authorized_keys 内容当面是一样的。 接下来操作h2,h3 软连接h2,h3(首先先删除~/.ssh/authorized_keys) ln -s /nfs_share/.ssh/authorized_keys ~/.ssh/authorized_keys 到此就完毕了。 測试结果是 能够免password从h2,h3登录到h1 而不能 从h1免password登录到h2,h3 这让人不解 本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5214684.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

Hadoop Hive概念学习系列之内部表和外部表对比分析(二)

Hive 的数据表分为两种,内部表和外部表。 内部表:这种表可以理解为数据和表结构都保存在一起的数据表。 外部表:在表结构创建以前,数据已经保存在 HDFS 中,通过创建表结构,将数据格式化到表的结果里。 进一步分析,内部表而言,当通过 DROP TABLE table_name 删除元数据中表结构的同时,表中的数据也同样会从 HDFS 中被删除。 外部表而言,当进行 DROP TABLE table_name 操作的时候,Hive 仅仅删除元数据的表结构,而不删除 HDFS 上的文件(即表里的数据),所以,相比内部表,外部表可以更放心大胆地使用。 数据表在删除的时候,内部表会连数据一起删除,而外部表只删除表结构,数据还是保留的。 本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/5660245.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

Hadoop HDFS概念学习系列之初步掌握HDFS的架构及原理3(三)

HDFS 如何写入文件? HDFS的文件写入原理,主要包括以下几个步骤: 1.客户端通过调用DistributedFileSystem的create方法,创建一个新的文件。 2.DistributedFileSystem通过RPC(远程过程调用)调用NameNode,去创建一个没有blocks关联的新文件。创建前,NameNode 会做各种校验,比如文件是否存在,客户端有无权限去创建等。如果校验通过,NameNode就会记录下新文件,否则就会抛出IO异常。 3.前两步结束后会返回 FSDataOutputStream 的对象,和读文件的时候相似,FSDataOutputStream 被封装成 DFSOutputStream,DFSOutputStream 可以协调 NameNode和 DataNode。客户端开始写数据到DFSOutputStream,DFSOutputStream会把数据切成一个个小packet,然后排成队列 data queue。 4.DataStreamer 会去处理接受 data queue,它先问询 NameNode 这个新的 block 最适合存储的在哪几个DataNode里,比如重复数是3,那么就找到3个最适合的 DataNode,把它们排成一个 pipeline。DataStreamer 把 packet 按队列输出到管道的第一个 DataNode 中,第一个 DataNode又把 packet 输出到第二个 DataNode 中,以此类推。 5.DFSOutputStream 还有一个队列叫 ack queue,也是由 packet 组成,等待DataNode的收到响应,当pipeline中的所有DataNode都表示已经收到的时候,这时akc queue才会把对应的packet包移除掉。 6.客户端完成写数据后,调用close方法关闭写入流。 7.DataStreamer 把剩余的包都刷到 pipeline 里,然后等待 ack 信息,收到最后一个 ack 后,通知 DataNode 把文件标示为已完成。 第一,客户端通过调用DistributedFileSystem对象中的creat()函数创建一个文件,DistributedFileSystem通过RPC调用在NameNode的文件系统命名空间中创建一个新文件,此时还没有相关的DataNode与之关联。 第二,NameNode会通过多种验证保证新的文件不存在于文件系统中,并且确保请求客户端拥有创建文件的权限。当所有验证通过时,NameNode会创建一个新文件的记录,如果创建失败,则抛出一个IOExceptinn异常;如果成功,则DistrihutedFiieSystem返回一个FSDataOutputStream给客户端用来写入数据。这里FSDataOutputStream和读取数据时的FSDataInputStream一样都包含一个数据流对象DFSOutputStream,客户端将使用它来处理与DataNode和NameNode之间的通信。第三,当客户端写入数据时,DFSOutputStream会将文件分割成包,然后放入一个内部队列,我们称为“数据队列”。DataStreamer会将这些小的文件包放入数据流中,DataStreamer的作用是请求NameNode为新的文件包分配合适的DataNade存放副本。返回的DataNode列表形成一个“管道”,假设这里的副本数是3,那么这个管道中就会有3个DataNode, DataStreamer将文件包以流的方式传送给队列中的第一个DataNode。第一个DataNDode会存储这个包,然后将它推送到第二个DataNode中,随后照这样进行,直到管道中的最后一个DataNode。 第四,DFSOutputStream同时也会保存一个包的内部队列,用来等待管道中的DataNode返回确认信息,这个队列被称为确认队列〔ack queue)。只有当所有管道中的DataNode都返回了写入成功的返回信息文件包,才会从确认队列中删除。 当然,HDFS会考虑写入失败的情况,当数据写入节点失败时,HDFS会做出以下反应。首先管道会被关闭,任何在确认通知队列中的文件包都会被添加到数据队列的前端,这样管道中失败的DataNode都不会丢失数据。当前存放在正常工作的DataNode之上的文件块会被赋予一个新的身份,井且和NameNode进行关联,这样,如果失败的DataNode过段时间后会从故障中恢复出来。其中的部分数据块就会被删除。然后,管道会把失败的DataNode删除,文件会继续被写到管道中的另外两个DataNode中。最后,NameNode会注意到现在的文件块副本数没有达到配置属性要求,会在另外的DataNode上重新安排创建一个副本,随后的文件会正常执行写入操作。 当然,在文件块写入期间,多个DataNode同时出现故障的可能性存在,但是很小。只要dfs.replicatinn.min的属性值(默认为1)成功写入,这个文件块就会被异步复制到集群的其他 DataNode中,直到满足dfs. rcplication. min的属性值(默认为3)。 客户端成功完成数据写入的操作后,就会调用6种close()函数关闭数据流。这步操作会在连接NameNode确认文件写入完全之前将所有剩下的文件包放入DataNode管道,等待通知确认信息.NameNode会知道哪些块组成一个文件(通过DataStreamer获得块位置信息),这样NameNode只要在返回成功标志前等待块被最小量(dfs.replication.min )复制即可。 本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/5080350.html,如需转载请自行联系原作者

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册