ubuntu下hadoop全分布安装
个人历时3天遭遇各种问题才安装好,虽然网上很多教程,但是还是自己写一个总结一下
转载请注明出处: http://hanlaiming.freetzi.com/?p=77
1.实验环境
Ubuntu12.04
Hadoop1.2.1
Java1.6.0_13
2.实验准备
1.在所有机器上安装ubuntu12.04,过程不赘述。
在安装过程中命名所有的用户名是hadoop,机器名分别为minglaihan,node1,node2,其中minglaihan作为主节点,其他两个是从节点。
2.在所有机器上执行:
sudo gedit etc/hosts
添加如下地址:
192.168.1.104 minglaihan
192.168.1.109 node1
192.168.1.110 node2
3.保证你的用户拥有root级别
用gedit或者vim,
sudo gedit etc/sudoers
在root ALL=(ALL:ALL) ALL下添加hadoop ALL=(ALL:ALL) ALL。
3.安装过程
- 安装java
三台机器上都执行:
指令:cd ~/java
unzip jdk-6u13-linux-i586.zip
chmod +x jdk-6u13-linux-i586.bin
sudo ./ jdk-6u13-linux-i586.bin
接下来按Enter以及yes就可以了
Java安装好之后,在bash.bashrc里添加java路径
sudo gedit etc/bash.bashrc
添加:export JAVA_HOME=/home/hadoop/java/jdk1.6.0_13
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
然后就可以查看java –version。
- 安装ssh
三台机器上都执行:
sudo apt-get install ssh
安装完成后执行ssh localhost即可登录自身的ssh,
exit退出
- 配置ssh无密码登陆
Ssh的一个重要特点就是可以远程访问,接下来我们实现相互访问不需要密码。
在所有机器上执行:
cd ~/.ssh
ssh-keygen -t rsa -P “”之后一直按回车,然后可以看见提示生成密钥。
将id_rsa.pub追加到authorized_keys授权文件中
cat id_rsa.pub >> authorized_keys
然后在主节点minglaihan上执行:
进入/home/hadoop/.ssh目录中,复制authorized_keys到node1的.ssh文件夹中
scp authorized_keys hadoop@node1:/home/hadoop/.ssh
scp authorized_keys hadoop@node2:/home/hadoop/.ssh
接下来使用ssh node1和ssh node2就可以无密码访问了
- 安装hadoop
首先在所有机器上执行解压缩操作
tar zxvf hadoop-1.2.1.tar.gz
然后开始修改hadoop/conf里面的配置文件
① core-sie.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-1.2.1/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://minglaihan:9000</value>
<description>
The name of the default file system. A URI whose scheme and authority determine the FileSystem implementation. The uri’s scheme determines the config property (fs.SCHEME.impl) naming the FileSystem implementation class. The uri’s authority is used to determine the host, port, etc. for a filesystem.
</description>
</property>
</configuration>
② hadoop-env.sh
添加:export JAVA_HOME=/home/hadoop/java/jdk1.6.0_13
③ hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
<description>
Default block replication. The actual number of replications can be specified when the file is created. The default is used if replication is not specified in create time.
</description>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/hadoop-1.2.1/hdfs/name</value>
<description>
</description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hadoop-1.2.1/hdfs/data</value>
<description>
</description>
</property>
</configuration>
④ mapred-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
<description>
Default block replication. The actual number of replications can be specified when the file is created. The default is used if replication is not specified in create time.
</description>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/hadoop-1.2.1/hdfs/name</value>
<description>
</description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hadoop-1.2.1/hdfs/data</value>
<description>
</description>
</property>
</configuration>
⑤ master
minglaihan
⑥ slaves
node1
node2
- 启动hadoop
cd ~/hadoop-1.2.1
首先格式化namenode
bin/hadoop namenode –format
然后启动所有节点
bin/start-all.sh
用jps查看当前hadoop启动的进程
jps
如果如果有Namenode,SecondaryNameNode,TaskTracker,DataNode,JobTracker,Jps六个进程表示已经启动成功。
当然我在这一步卡了很久,始终有各种各样的问题,在这个过程中也会学到很多,所以遇到有namenode或者datanode没启动,主要的处理方法就是清除tmp和logs文件夹,然后每次格式化后查看logs,根据报错查找问题。
stop-all.sh停止所有进程
此时在浏览器中查看minglaihan:50030,可以看到hadoop的mapreduce管理界面
- wordcount测试
在home主目录下创建一个装有无数单词的文本,例如test.txt
将test.txt传输到hdfs系统的input里,
bin/hadoop fs -copyFromLocal home/hadoop/test.txt input
在hadoop文件夹下执行:
hadoop jar hadoop-examples-1.2.1.jar wordcount input output
将输出结果传到output里
此时mapreduce会显示执行信息,执行完毕后,用指令查看
hadoop fs –cat output/part-r-00000
显示计算单词结果
至此,hadoop环境基本安装,期间遇到各种问题不要放弃。。。