悲剧,绝对的悲剧,悲剧中的悲剧。
分类: 云计算
2015-01-01 21:03:36
环境如下:
ubuntu-12.04.2-server-amd64
hadoop-1.0.4
VirtualBox
sudo rm /etc/udev/rules.d/70-persistent-net.rules
然后重启,机器就能连网了。
sudo apt-get install openjdk-6-jdk
master和slave都要安装。
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 #iface eth0 inet dhcp iface eth0 inet static address 192.168.0.40 netmask 255.255.255.0 gateway 192.168.0.1 dns-nameservers 8.8.8.8
slave1和slave2的配置只需要修改IP地址,分别是192.168.0.41和192.168.0.42。
192.168.0.40 master.Hadoop 192.168.0.41 slave1.Hadoop 192.168.0.42 slave2.Hadoop
三台机器的hosts配置相同。
在master上执行:
ssh-keygen -t rsa -P ''
这个命令用于生成无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对为id_rsa和id_rsa.pub,默认存储在/home/hadoop/.ssh目录下。接着在master上做如下配置,把id_rsa.pub追加到授权的key里:
cat .ssh/id_rsa.pub >> .ssh/authorized_keys
修改权限:authorized_keys的权限和.ssh目录的权限,使用如下命令:
chmod 600 .ssh/authorized_keys
chmod 700 .ssh
在slave机器上创建.ssh目录,使用如下命令:
mkdir .ssh
把authorized_keys复制到slave1机器的/home/hadoop/.ssh中,使用如下命令:
scp .ssh/authorized_keys slave1.Hadoop:/home/hadoop/.ssh/authorized_keys
修改权限,同master上的权限配置,在slave2上做同样的操作。
解压hadoop-1.0.4.tar.gz:
tar -zxvf hadoop-1.0.4.tar.gz
编辑conf/hadoop-env.sh,修改JAVA_HOME的值:
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-amd64/
编辑conf/mapred-site.xml,添加内容:
xml version="1.0"?> xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>mapred.job.trackername> <value>value> property> configuration>
编辑conf/hdfs-site.xml,添加内容:
xml version="1.0"?> xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>dfs.name.dirname> <value>/home/hadoop/namevalue> property> <property> <name>dfs.data.dirname> <value>/home/hadoop/datavalue> property> <property> <name>dfs.replicationname> <value>2value> property> configuration>
编辑conf/core-site.xml,添加内容:
xml version="1.0"?> xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>fs.default.namename> <value>hdfs://master.Hadoop:9000value> property> <property> <name>hadoop.tmp.dirname> <value>/home/hadoop/hadoop-1.0.4/tmpvalue> property> configuration>
编辑conf/masters,删除localhost,添加内容:
master.Hadoop
编辑conf/slaves,删除localhost,添加内容:
slave1.Hadoop slave2.Hadoop
在master上执行:
scp -r hadoop-1.0.4 slave1.Hadoop:/home/hadoop/ scp -r hadoop-1.0.4 slave2.Hadoop:/home/hadoop/
hadoop-1.0.4/bin/hadoop namenode -format
在master上执行:
hadoop-1.0.4/bin/start-all.sh
在master上执行jps命令,输出如下:
1974 JobTracker 2101 Jps 1602 NameNode 1893 SecondaryNameNode
说明master上hadoop正常启动。
在slave上执行jps命令,输出如下:
2007 Jps 1423 DataNode 1636 TaskTracker
说明slave上hadoop正常启动。
也可以在浏览器中打开192.168.0.40:50030或者192.168.0.40:50070查看master和slave是否正常启动。
在master上执行:
hadoop-1.0.4/bin/stop-all.sh
hadoop届的hello world,wordcount程序
首先生成要执行的jar文件
$ mkdir wordcount_classes
$ javac -classpath ${HADOOP_HOME}/hadoop-${HADOOP_VERSION}-core.jar -d wordcount_classes WordCount.java
$ jar -cvf /usr/joe/wordcount.jar -C wordcount_classes/ .
然后在HDFS上面准备好要count的输入文件
$ bin/hadoop dfs -ls [hdfs://
/usr/joe/wordcount/input/file01
/usr/joe/wordcount/input/file02
$ bin/hadoop dfs -cat /usr/joe/wordcount/input/file01
Hello World Bye World
$ bin/hadoop dfs -cat /usr/joe/wordcount/input/file02
Hello Hadoop Goodbye Hadoop
执行查询:
$ bin/hadoop jar /usr/joe/wordcount.jar org.myorg.WordCount /usr/joe/wordcount/input /usr/joe/wordcount/output
输出
$ bin/hadoop dfs -cat /usr/joe/wordcount/output/part-00000
Bye 1
Goodbye 1
Hadoop 2
Hello 2
World 2
点击(此处)折叠或打开
参考链接:
http://blog.chinaunix.net/uid-26867092-id-3213709.html
http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html
官网1.0.4的安装教程: