小编写在前面的话
“天下武功,唯快不破”,但是如果不清楚原理,快也是徒劳。在这物欲横行,数据爆炸的年代,BigData时代到了,如果熟悉了整个hadoop的搭建过程,我们是否也能从中攫取一桶金?!
前期准备
l 两台linux虚拟机(本文使用redhat5,IP分别为 192.168.1.210、192.168.1.211)
l JDK环境(本文使用jdk1.6,网上很多配置方法,本文省略)
l Hadoop安装包(本文使用Hadoop1.0.4)
搭建目标
210作为主机和节点机,211作为节点机。
搭建步骤
1修改hosts文件
在/etc/hosts中增加:
1 2 |
192.168.1.210 hadoop1 192.168.1.211 hadoop2 |
2 实现ssh无密码登陆
2.1 主机(master)无密码本机登陆
1 |
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa |
直接回车,完成后会在 ~/.ssh/ 生成两个文件: id_dsa 和 id_dsa.pub 。这两个是成对出现,类似钥匙和锁。
再把 id_dsa.pub 追加到授权 key 里面 ( 当前并没有 authorized_key s文件 ) :
1 |
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys |
实验:
1 |
ssh localhost hostname |
还是要输入密码,一般这种情况都是因为目录或文件的权限问题,看看系统日志,确实是权限问题,
.ssh下的authorized_keys权限为600,其父目录和祖父目录应为755
2.2 无密码登陆节点机(slave)
slave上执行:
1 |
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa |
生成.ssh目录。
将master上的authorized_keys复制到slave上:
1 |
scp authorized_keys hadoop2:~/.ssh/ |
实验:在master上执行
1 |
ssh hadoop2 |
实现无密码登陆。
3 配置Hadoop
3.1拷贝hadoop
将hadoop-1.0.4.tar.gz ,拷贝到usr/local 文件夹下,然后解压。
解压命令:
1 |
tar –zxvf hadoop-1.0.4.tar.gz |
3.2查看 cat /etc/hosts
1 2 |
192.168.1.210 hadoop1 192.168.1.211 hadoop2 |
3.3 配置 conf/masters 和 conf/slaves
conf/masters:
1 |
192.168.1.210 |
conf/slaves:
1 2 |
192.168.1.211 192.168.1.211 |
3.4 配置 conf/hadoop-env.sh
加入
1 |
export JAVA_HOME=/home/elvis/soft/jdk1.7.0_17 |
3.5 配置 conf/core-site.xml
加入
1 2 3 4 |
<property> <name>fs.default.name</name> <value>hdfs://192.168.1.210:9000</value> </property> |
3.6 配置 conf/hdfs-site.xml
加入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<property> <name>dfs.http.address</name> <value>192.168.1.210:50070</value> </property> <property> <name>dfs.name.dir</name> <value>/usr/local/hadoop/namenode</value> </property> <property> <name>dfs.data.dir</name> <value>/usr/local/hadoop/data</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> |
3.7 配置conf/mapred-site.xml
加入
1 2 3 4 |
<property> <name>mapred.job.tracker</name> <value>192.168.1.50:8012</value> </property> |
3.8 建立相关的目录
/usr/local/hadoop/ //hadoop数据和namenode目录
【注意】只创建到hadoop目录即可,不要手动创建data和namenode目录。
其他节点机也同样建立该目录。
3.9 拷贝hadoop文件到其他节点机
将hadoop文件远程copy到其他节点(这样前面的配置就都映射到了其他节点上),
命令:
1 |
scp -r hadoop-1.0.4 192.168.1.211:/usr/local/ |
3.10 格式化Active master(192.168.201.11)
命令:
1 |
bin/hadoop namenode -format |
3.11 启动集群 ./start-all.sh
现在集群启动起来了,看一下,命令:
1 |
bin/hadoop dfsadmin -report |
2个datanode,打开web看一下
浏览器输入:192.168.1.210:50070
打完收工,集群安装完成!
常见问题
1 Bad connection to FS. command aborted
需要查看日志,我的日志中显示:
2013-06-09 15:56:39,790 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.io.IOException: NameNode is not formatted.
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:330)
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:100)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:388)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:362)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:276)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:496)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1279)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1288)
NameNode没被格式化!!!
解决办法:
原因是我手动建了 /usr/local/hadoop/data 和 /usr/local/hadoop/namenode,把这两个目录删除重新格式化namenode即可。
2 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Invalid directory in dfs.data.dir: Incorrect permission for /usr/local/hadoop/data, expected: rwxr-xr-x, while actual: rwxrwxrwx
解决办法:
/usr/local/hadoop/目录权限过高,改成chmod 755即可。
3 eclipse插件问题
异常1:2011-08-03 17:52:26,244 INFO org.apache.hadoop.ipc.Server: IPC Server handler 6 on 9800, call getListing(/home/fish/tmp20/mapred/system) from 192.168.2.101:2936: error: org.apache.hadoop.security.AccessControlException: Permission denied: user=DrWho, access=READ_EXECUTE, inode=”system”:root:supergroup:rwx-wx-wx
org.apache.hadoop.security.AccessControlException: Permission denied: user=DrWho, access=READ_EXECUTE, inode=”system”:root:supergroup:rwx-wx-wx
at org.apache.hadoop.hdfs.server.namenode.PermissionChecker.check(PermissionChecker.java:176)
at org.apache.hadoop.hdfs.server.namenode.PermissionChecker.checkPermission(PermissionChecker.java:111)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:4514)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPathAccess(FSNamesystem.java:4474)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getListing(FSNamesystem.java:1989)
at org.apache.hadoop.hdfs.server.namenode.NameNode.getListing(NameNode.java:556)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:508)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:959)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:955)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:953)
解决方法:在hdfs-site.xml里加入下面的
1 2 3 4 |
<property> <name>dfs.permissions</name> <value>false</value> </property> |
HDFS常用命令
创建文件夹
1 |
./hadoop fs –mkdir /usr/local/hadoop/godlike |
上传文件
1 |
./hadoop fs –put/copyFromLocal 1.txt /usr/local/hadoop/godlike |
查看文件夹里有哪些文件
1 |
./hadoop fs –ls /usr/local/hadoop/godlike |
查看文件内容
1 |
./hadoop fs –cat/text/tail /usr/local/hadoop/godlike/1.txt |
删除文件
1 |
./hadoop fs –rm /usr/local/hadoop/godlike |
删除文件夹
1 |
./hadoop fs –rmr /usr/local/hadoop/godlike |
相关文章推荐《WIN08+tomcat实现负载均衡》
日币奖励:
本文为原创文章、首发,根据本站积分规则给予日币奖励共6枚。
AD:本站开放投稿及积分(日币),日币可兑换实物奖励,每月top3可获得礼品一份。
猜你还喜欢
- 07-08八年专业安全团队承接渗透入侵维护服务
- 08-06SQLMAP的注入命令以及使用方法
- 08-03白帽故事汇:网络安全战士从来不是「男生」的专利
- 07-27编辑器漏洞手册
- 07-12web安全之如何全面发现系统后台
- 02-22常见Web源码泄露总结
- 07-25网站后台登陆万能密码
- 07-23破解emlog收费模板“Begin”
- 01-12批量检测SQL注入
- 01-22Apache Solr远程代码执行漏洞(CVE-2017-12629)从利用到入侵检测
- 随机文章
-
- CVE-2018-17612:没想到吧?买个耳机也能遭遇中间人攻击
- 技术分析 | 浅析无文件攻击
- kbd-audio:通过麦克风来捕获和分析键盘输入的工具
- QQ二十年沉浮起落,黑产从未缺席
- 密码朋克的社会实验(一):开灯看暗网
- Smart Greybox Fuzzing:一种功能更强效率更高的Fuzzer模型
- WordPress Plugin AutoSuggest插件SQL注入复现与分析
- 一次被防火墙拦截的挖矿病毒应急处置经历
- 总结回望 | MS08-067漏洞的十年回顾
- 恶意文档执行命令提取工具:CMD Watcher
- Struts2-005远程代码执行漏洞分析
- AI和网络安全工作的未来
- CVE-2018-19518:PHP imap_open函数任意命令执行漏洞复现
- 漏洞分析:解析Windows XP版永恒之蓝中的一个Bug
- FilesLocker2.1圣诞特别版勒索病毒与早期版本解密工具
- 挖洞经验 | Facebook CDN服务器的XSS漏洞
- Sodium:一个提供加密、解密、签名等功能的软件库
- 漏洞预警 | ThinkPHP5远程命令执行漏洞
- Windows 0day任意文件覆盖漏洞分析与验证
- SCAT:信令收集和分析工具
- 热门文章
-
- 八年专业安全团队承接渗透入侵维护服务
- Emlog黑客站模板“Milw0rm”发布
- Stuxnet纪录片-零日 Zero.Days (2016)【中文字幕】
- SQLMAP的注入命令以及使用方法
- 白帽故事汇:网络安全战士从来不是「男生」的专利
- 编辑器漏洞手册
- web安全之如何全面发现系统后台
- 常见Web源码泄露总结
- 渗透测试培训(第五期)
- 深入理解JAVA反序列化漏洞
- cmseasy前台无需登录直接获取敏感数据的SQL注入(有POC证明)
- 网站后台登陆万能密码
- 黑麒麟2016渗透培训系列教程
- 破解emlog收费模板“Begin”
- 那些强悍的PHP一句话后门
- Android平台渗透测试套件zANTI v2.5发布(含详细说明)
- 渗透工具BackTrack与KaliLinux全套视频教程
- Python列为黑客应该学的四种编程语言之一 初学者该怎么学
- CVE-2017-11882漏洞复现和利用
- 恶意程序报告在线查询工具
文章存档
- 2021年3月(4)
- 2020年12月(4)
- 2020年11月(5)
- 2020年10月(8)
- 2020年9月(8)
- 2020年8月(20)
- 2020年7月(47)
- 2020年6月(70)
- 2020年5月(41)
- 2020年4月(21)
- 2020年3月(120)
- 2020年2月(26)
- 2019年12月(12)
- 2019年11月(13)
- 2019年10月(17)
- 2019年9月(15)
- 2019年8月(13)
- 2019年7月(15)
- 2019年6月(15)
- 2019年5月(19)
- 2019年4月(23)
- 2019年3月(19)
- 2019年2月(11)
- 2019年1月(29)
- 2018年12月(24)
- 2018年11月(56)
- 2018年10月(79)
- 2018年9月(20)
- 2018年8月(17)
- 2018年7月(16)
- 2018年6月(7)
- 2018年5月(10)
- 2018年3月(6)
- 2018年2月(2)
- 2018年1月(11)
- 2017年11月(18)
- 2017年10月(6)
- 2017年9月(8)
- 2017年8月(7)
- 2017年7月(7)
- 2017年6月(15)
- 2017年5月(30)
- 2017年4月(7)
- 2017年3月(1)
- 2017年2月(4)
- 2017年1月(1)
- 2016年12月(3)
- 2016年11月(7)
- 2016年10月(6)
- 2016年9月(6)
- 2016年8月(102)
- 2016年7月(24)
- 2013年7月(1)
- 文章标签
-