ubuntu搭建hadoop

搭建hadoop也有一段时间了,真是太没有效率了,小小的记录一下。

我的OS是ubuntu11.04,hadoop版本是0.20.203.0,jdk是1.6.0_33。

一共3台电脑:

ip                               作用

172.16.95.50           namenode,jobtracker

172.16.95.51           datanode1,tasktracker

172.16.95.52           datanode2,tasktracker

3台电脑通过交换机组成局域网,保证能相互ping通,当然,之前用虚拟机按照同样的做法也成功了,只是要注意VM虚拟机网络连接要用桥接方式,如果是虚拟机,完全可以配置好一台后复制或者克隆~

步入主题:

1.修改hosts

sudo gedit /etc/hosts
当然也可以使用vi,nano等任何你喜欢的编辑器。

修改为:

127.0.0.1	localhost
172.16.95.50	namenode
172.16.95.51	datanode1
172.16.95.52    datanode2

2.修改hostname(如何需要的话)

sudo gedit /etc/hostname
改成相应的主机名,172.16.95.50 的改为namenode,两外两台分别改为datanode1和datanode2.

3.3台主机建立相同的用户,我这里是ubuntu,分组名也是ubuntu。本身我是没有通过创建过程的,因为我在安装系统时就是用的同样的用户名ubuntu,这里提供创建用户和用户组的方式:
先创建ubuntu用户组:
sudo addgroup ubuntu
然后创建ubuntu用户:
sudo adduser -ingroup ubuntu ubuntu
给ubuntu用户添加权限,打开/etc/sudoers文件:
sudo gedit /etc/sudoers
按回车键后就会打开/etc/sudoers文件了,给ubuntu用户赋予root用户同样的权限。
在root   ALL=(ALL:ALL)   ALL下添加ubuntu   ALL=(ALL:ALL)  ALL,
ubuntu  ALL=(ALL:ALL) ALL

4.安装jdk

两种方法,一种是自己下载jdk安装包,然后手动安装,配置环境变量,第二种是用ubuntu强大的apt-get install搞定,自选。

方法一:

我这里是自己下载的jdk的bin文件,然后

         (1)把jdk安装文件拷贝到/home/ubuntu目录下,然后安装

cp jdk-6u33-linux-i586.bin /home/ubuntu

cd/home/ubuntu

chmodu+x chmod(赋予可执行权限)

./jdk-6u33-linux-i586.bin(安装)

(2)安装已完成修改环境变量并且把java安装到系统

修改/etc/environment如下

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/ubuntu/jdk1.6.0_33/bin:/home/ubuntu/jdk1.6.0_33/jre/bin"
CLASSPATH=.:/home/ubuntu/jdk1.6.0_33/lib:/home/ubuntu/jdk1.6.0_33/jre/lib
JAVA_HOEM=/home/ubuntu/jdk1.6.0_33


方法二:

ubuntu下一条命令即可:

sudo apt-get install openjdk-6-jre

查看Java版本确定已经安装到系统:

java-version

如果看到版本说明安装成功。


5.安装ssh

使用命令

sudo apt-get install ssh openssh-server
或者
sudo apt-get install ssh

6.配置ssh,无密码登录

做这一步之前首先建议所有的机子全部转换为hadoop用户,以防出现权限问题的干扰。

切换的命令为:

su -ubuntu

ssh生成密钥有rsa和dsa两种生成方式,默认情况下采用rsa方式。

1. 创建ssh-key,,这里我们采用rsa方式

ssh -keygen -t rsa -P ""
(注:回车后会在~/.ssh/下生成两个文件:id_rsa和id_rsa.pub这两个文件是成对出现的)

2. 进入~/.ssh/目录下,将id_rsa.pub追加到authorized_keys授权文件中,开始是没有authorized_keys文件的;

cd ~/. ssh
cat id_rsa.pub >> authorized_keys

7.为namenode安装hadoop(很多步骤可以用图形界面操作,如果喜欢用命令行,这里也提供些命令)
(1)首先下载hadoop,一般会下载到/home/ubuntu/下载里面,进入/home/ubuntu/将其复制到/home/ubuntu/hadoop下,我之前在/home/ubuntu新建了一个hadoop文件夹,并且在hadoop文件夹下建立tmp文件夹,以后用到。
sudo cp hadoop-0.20.203.0rc1. tar .gz /home/ubuntu/hadoop
解压hadoop-0.20.203.tar.gz;
cd /home/ubuntu/hadoop
sudo tar -zxvf hadoop-0.20.203.0rc1. tar .gz
将该hadoop文件夹的属主用户设为ubuntu,
sudo chown -R ubuntu:ubuntu hadoop-0.20.203.0
(2)修改hadoop的hadoop-env.sh文件
配置conf/hadoop-env.sh(找到#export JAVA_HOME=...,去掉#,然后加上本机jdk的路径);
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk(这里是用ubuntu自动安装的路径,如果是手动安装的,选择自己的jdk安装路径,我的是
export JAVA_HOME=/home/ubuntu/jdk1.6.0_33
(3)配置core-site.xml文件
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>
 <name>fs.default.name</name>
  <value>hdfs://namenode:9000</value>
</property>
<property>
  <name>hadoop.tmp.dir</name>
 <value>/home/ubuntu/hadoop/tmp</value>
</property>
</configuration>
(4)配置mapred-site.xml文件

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>
  <name>mapred.job.tracker</name>
  <value>namenode:9001</value>
</property>
<property>
  <name>mapred.local.dir</name>
 <value>/home/ubuntu/hadoop/tmp</value>
</property>
</configuration>

(5)配置hdfs-site.xml文件
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/ubuntu/hadoop/name1, /home/ubuntu/hadoop/name2</value>
<description>  </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/ubuntu/hadoop/data1, /home/ubuntu/hadoop/data2</value>
<description> </description>
</property>
<property>
  <name>dfs.replication</name>
  <value>2</value>
</property>
</configuration>
(注意tmp文件夹已经建立,这里的name1,name2,data1,data2不要建立,格式化的时候自动生成)
(6)打开conf/masters文件,添加作为secondarynamenode的主机名,这里需填写 ubuntu Ok了

(7)打开conf/slaves文件,添加作为slave的主机名,一行一个。

8.将namenode上的文件传到两个datanode上
(1)公钥的复制
scp /home/ubuntu/. ssh /id_rsa .pub ubuntu@datanode1:/home/ubuntu/. ssh /
scp /home/ubuntu/. ssh /id_rsa .pub ubuntu@datanode2:/home/ubuntu/. ssh /
在每个子节点的自己种都要操作
cat /home/ubuntu/ . ssh /id_rsa .pub >>  /home/ubuntu/. ssh /authorized_keys
在namenode使用ssh登录datanode,看看是不是可以不是用密码登录,如果可以,就说明ssh配置成功。如果不成功,看看第二次是否可以,如果还不行,可能就是配置或者网络出错了。
(2)hadoop文件夹的复制,其中的配置也就一起复制过来了
scp -r /home/ubuntu/hadoop ubuntu@datanode1 : /home/ubuntu
scp -r /home/ubuntu/hadoop ubuntu@datanode2 : /home/ubuntu
复制过来后,基本不用改变,注意hadoop中关于java的安装路径的配置,确保一样。

9.启动hadoop
(1)首先格式化,进入hadoop目录
cd /home/ubuntu/hadoop/hadoop-0.20.203.0
执行:bin/hadoop namenode -format
这时会在hadoop目录下建造name1,在 hadoop-0.20.203.0目录下建立一个没有名称的目录。
(2)启动hadoop:bin/start-all.sh
显示如下:
starting namenode, logging to /home/ubuntu/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-ubuntu-namenode-namenode.out
datanode2: starting datanode, logging to /home/ubuntu/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-ubuntu-datanode-datanode2.out
datanode1: starting datanode, logging to /home/ubuntu/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-ubuntu-datanode-datanode1.out
namenode: starting secondarynamenode, logging to /home/ubuntu/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-ubuntu-secondarynamenode-namenode.out
starting jobtracker, logging to /home/ubuntu/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-ubuntu-jobtracker-namenode.out
datanode1: starting tasktracker, logging to /home/ubuntu/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-ubuntu-tasktracker-datanode1.out
datanode2: starting tasktracker, logging to /home/ubuntu/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-ubuntu-tasktracker-datanode2.out

namenode输入:jps
9393 NameNode
9670 JobTracker
9592 SecondaryNameNode
9779 Jps
在datanode输入jps会显示有Datanode和Tasktracker.
说明启动正常。
(3)停止:
bin/stop-all.sh
显示如下:
stopping jobtracker
datanode1: stopping tasktracker
datanode2: stopping tasktracker
stopping namenode
datanode1: stopping datanode
datanode2: stopping datanode
namenode: stopping secondarynamenode

这样,hadoop的搭建暂告结束。
如果有什么错误,请指出讨论。

参考文章http://www.db89.org/post/2012-06-05/hadoopjiqunhuanjing



你可能感兴趣的:(java,jdk,hadoop,ubuntu,ssh,logging)