配前准备java
一. 安装环境:Ubuntu 14.04 ---------一共三台机器node
其中一台namenode+jobtracker (master) , 两台 datanode + tasktracker(hadoop, salve1)c++
下表为各个机器的具体内容web
ip username/password hostnameapp
10.60.38.165 hadoop/123456 hadoop
ssh
10.60.38.166 hadoop/123456 master
oop
10.60.38.155 hadoop/123456 salve1 (......竟然拼错了,我靠)
测试
在每台机器的/etc/hosts 下面 添加spa
10.60.38.165 hadoop.net
10.60.38.166 master
10.60.38.155 salve1
使得各台机器相互之间能够ping通(经过hostname能够ping)
(ps: /etc/hosts 里面的数据所有清空,只留上面的三个 以及第一项: 127.0.0.1 localhost )
二. SSH 无密码验证配置
1.由于大部分Linux里面默认已经安装好了ssh,我在安装时已经默认安装好,可是ssh service 没有安装,使用 sudo apt-get install openssh-server 来安装 ssh service。(确保 22端口号处于监听状态:netstat -nat 查看)
2.在每台机器上都执行 下面命令: ssh-kengen -t rsa -P ""
一路enter (将密钥的位置保存在默认的路径下)
在user的当前目录下出现目录/.ssh(默认的权限为700)
里面生成两个文件 id_rsa 和 id_rsa.pub
3.接着在 Master 节点上作以下配置把id_rsa.pub 追加到受权的key 里面
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
4.下面在其余两台机器上依次执行命令将各自生成的id_rsa.pub 添加到Master 下的authorized_keys 里面
cat id_rsa.pub | ssh hadoop@master "cat >> ~/.ssh/authorized_keys ( 此时 ssh 到 另一台机器上 须要另一台机器的密码)
5.最后将Master 机器上获得的 authorized_keys 依次添加到 各台机器的 /home/hadoop/.ssh 目录下
scp authorized_keys hadoop@hadoop :~/.ssh
scp authorized_keys hadoop@salve1:~/.ssh
6.配置完成后在每一台机器上均可以无密码验证登陆另一台机器了。因而这一步搞定。
在每台机器上安装jdk 和 Hadoop
配置Hadoop (此处个人版本为hadoop0.20.2,jdk1.7)
----在配置文件中设值时,两边千万不能有空格,否则无效。
接下来配置配置文件:hadoop-env.sh, core-site.xml, hdfs-site.xml, mapred-site.xml
PS:
对于hadoop-env.sh 各个节点的配置都是相同的。
对于master节点,须要额外配置slaves 文件,在里面添加各个datanode 的ip 地址
下面附上master节点与Hadoop节点的配置(salve1与Hadoop相似,只需修改对于的ip,这里我已经大部分采用系统默认配置,因此无需更改)
hadoop-env.sh:
export JAVA_HOME=/opt/jdk1.7
(就在最后面加上便可)
core-site.xml:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
ps: 这里当我添加属性 hadoop.tmp.dir 改变其默认路径时,集群在启动时报错。。。。未解,先暂时启用默认路径。还望大神指教。
hdfs-site.xml:
<configuration>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
mapred-site.xml:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>10.60.38.166:9001</value>
</property>
</configuration>
slaves:
10.60.38.165 hadoop
10.60.38.155 salve1
masters:
master
在master节点配置好了而后复制到各个Datanode 节点。
注意:这里的master, slaves 文件在复制的时候能够不用变更,系统会自动忽略。并且配置都不须要改变,由于已经尽可能采用了默认配置
---------------------------------------------------------------------------------------------------------------------
测试运行
通过如下几步:
1.create some files(file01.txt, file02.txt)
2.hadoop fs -mkdir input
3.hadoop fs -put file*.txt input
4.hadoop jar /opt/hadoop/hadoop-0.20.2-examples.jar wordcount input output
5.hadoop fs -ls output
6.hadoop fs -cat output/part-r-00000
最获得结果:
;slkdfj 1
aer 1
apple 1
are 1
asfjjjf 1
c++ 1
fj 1
hello 2
java 3
tantairs 1
world4