首页 > 代码库 > Hadoop的安装(Ubuntu 12.10为例)

Hadoop的安装(Ubuntu 12.10为例)

1. JDK安装

a) 安装目录:网上的安装JDK资料中安装目录基本有两种——/opt和/usr/local。这两个目录安装在哪里其实都无所谓,只不过在以前的linux中人们习惯将软件安装在/usr/local中。这里推荐/opt目录。

b) 配置文件:将JDK同时配置在/etc/profile和/etc/bash.bashrc中

c) 下载32位或64位JDK安装文件,形如jdk-6u37-linux-i586.bin或jdk-6u37-linux-x64.bin

d) 拷贝JDK文件到/opt目录:

# mv jdk-6u37-linux-x64.bin /opt

e) 授权,并执行:

chmod +x jdk-6u37-linux-x64.bin
./jdk-6u37-linux-x64.bin

f) 设置环境变量:

vim /etc/profile
vim /etc/bash.bashrc

在两个文件的末尾都加上下面一段

#set java environment
export JAVA_HOME=/opt/jdk1.6.0_37
export JRE_HOME=/opt/jdk1.6.0_37/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

g) 重新打开终端,测试是否安装成功:

java –version

注1:本部分参考http://www.neversaydie.cc/ubuntu-install-jdk-in-detailed/,谢谢原作者。

注2:或者可以省略以上步骤,直接:

sudo apt-get install openjdk-6-jdk

java -version

 

2. 安装SSH

a) 安装SSH,运行:

sudo apt-get install ssh

b) 启动服务:

sudo /etc/init.d/ssh start

c) 通过如下命令查看服务是否正确启动:

ps -e | grep ssh

 

d) 设置成免密码登录,生成私钥和公钥,创建一个空密钥:

ssh-keygen -t rsa -P ‘‘ -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

 

3. Hadoop基本设置

a) 设定hadoop-env.sh:

进入hadoop目录,打开conf目录下到hadoop-env.sh,添加以下信息:
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk (视你机器的java安装路径而定)
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:/usr/local/hadoop/bin

b) 让环境变量配置生效source:

~$ source /opt/hadoop/conf/hadoop-env.sh

c) 运行一下hadoop自带的例子WordCount来感受以下MapReduce过程:

在hadoop目录下新建input文件夹

~$ mkdir input

将conf中的所有文件拷贝到input文件夹中

~$ cp conf/* input<span style="font-family: Arial, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255); "> </span>

运行WordCount程序,并将结果保存到output中

~$ bin/hadoop jar hadoop-0.20.2-examples.jar wordcount input output

观察结果

~$ cat output/*

 

4. Hadoop伪分布安装

a) 解压hadoop文件,修改配置:

conf/core-site.xml:
<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>
  </property>
</configuration>

conf/hdfs-site.xml:
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>

conf/mapred-site.xml:
<configuration>
  <property>
    <name>mapred.job.tracker</name>
    <value>localhost:9001</value>
  </property>
</configuration>

b) 格式化HDFS文件系统:bin/hadoop namenode -format

c) 启动:bin/start-all.sh

d) jps查看JVM实例:

xxx TaskTracker
xxx DataNode
xxx JobTracker
xxx SecondaryNameNode
xxx Jps
xxx NameNode

e) 查看地址:

NameNode - http://localhost:50070/
JobTracker - http://localhost:50030/

 

5. Hadoop全分布安装

a) 集群机器三台:

192.168.56.101 master
192.168.56.102 slave1
192.168.56.103 slave2
保证各集群机安装了java,下载hadoop安装文件
为了方便管理可创建一个特定的用户:
sudo addgroup hadoop
sudo adduser --ingroup hadoop hadoop

b) 将hadoop文件的拥有者改为hadoop用户:

sudo chown -R hadoop:hadoop hadoop

c) 通过hadoop账号配置SSH,具体过程参见上文

vim /etc/hosts
192.168.56.101 master
192.168.56.102 slave1
192.168.56.103 slave2

e) 修改/etc/hostname的主机名(如;master,slave1等)

f) 配置hadoop-env.sh的export JAVA_HOME=

以下配置的目录需要确认有权限和目录存在,否则会出现问题。
conf/core-site.xml:
<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://master:9000</value>
    <final>true</final>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/data/hadoop/tmp</value>
    <final>true</final>
  </property>
</configuration>

conf/hdfs-site.xml:
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>2</value>
    <final>true</final>
  </property>
  <property>
    <name>dfs.name.dir</name>
    <value>/data/hadoop/hdfs/name</value>
    <final>true</final>
  </property>
  <property>
    <name>dfs.data.dir</name>
    <value>/data/hadoop/hdfs/data</value>
    <final>true</final>
  </property>
</configuration>

conf/mapred-site.xml:
<configuration>
  <property>
    <name>mapred.job.tracker</name>
    <value>master:9001</value>
  </property>
</configuration>

conf/masters:
master

conf/slaves:
slave1
slvae2

g) 最后启动hadoop:

bin/hadoop namenode -format#set java environment
bin/start-all.sh

 

10) 一些基本测试:

Copy the input files into the distributed filesystem: 
$ bin/hadoop fs -put conf input

Run some of the examples provided: 
$ bin/hadoop jar hadoop-examples-*.jar grep input output ‘dfs[a-z.]+‘

Examine the output files:

Copy the output files from the distributed filesystem to the local filesytem and examine them: 
$ bin/hadoop fs -get output output 
$ cat output/*

View the output files on the distributed filesystem: 

$ bin/hadoop fs -cat output/*

When you‘re done, stop the daemons with: 
$ bin/stop-all.sh

 

PS:注意文件权限问题。。启动的适合我发现以下这个问题

WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Invalid directory in dfs.data.dir: Incorrect permission for /xxx/data, expected: rwxr-xr-x, while actual: rwxrwxr-x
通过修改文件权限解决了

 注:本部分参考http://my.oschina.net/u/220934/blog/130021,谢谢原作者。