Ubuntu 12.04 搭建hadoop2.0.4最新版本

 

Ubuntu 12.04搭建hadoop2.0.4

最近有点空闲时间 ,所以想搞一下hadoop,网上一搜资料才发现都是很老的版本,本人的毛病是想学一个新东西就学它的最新版本,因为最新版本一般是功能最新最多的版本,有点有点强迫症的感觉,虽然我也知道这个习惯不好,因为最新版本的资料不好找 ,导致浪费了好多时,但是因为自己的强迫症 还是硬头皮挑了个最新的版本来学,总结了一下网上的资料和自己的操作 分享给大家,希望对大家有帮助 ,但愿不是误人子弟; 因为是新手,遇到了好多问题,也希望大家帮帮忙,本人在安装的时候一直不知道怎么编译 hadoop的eclipse插件,大概是0.2x以后的版本  已经不给提供hadoop的eclipse插件了,希望大神  给提供以下编译的方法,对我们这些新人来说是莫大的帮助!

一、linux配置

1. 创建hadoop组

Sudo addgroup hadoop

添加用户hadoop1到hadoop组

Sudo adduser --ingroup hadoop hadoop1

给hadoop1用户赋权限

sudo gedit /etc/sudoers

在root   ALL=(ALL:ALL)   ALL下添加

hadoop   ALL=(ALL:ALL)  ALL

2.   安装JDK环境

http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u32-downloads-1594644.html  在以上 连接 下 载 linux 64 下的 jdk 的安装文件:  jdk-6u32-linux-x64.bin
01 ,将下 载好的 jdk-6u32-linux-x64.bin 通 过 SSH 上 传到 /usr/java 下
scp -r ./jdk-6u32-linux-x64.bin root@hadoop1:/usr/java
02 , 进入 JDK 安装目 录 cd /usr/java 并且 执行 chmod +x jdk-6u32-linux-x64.bin
03 , 执行 ./jdk-6u32-linux-x64.bin
04 ,配置 环境变量,执行 cd /etc 命令后 执行 vi profile ,在行末尾添加
export JAVA_HOME=/usr/java/jdk1.6.0_32
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
05 , 执行 chmod +x profile 将其 变成可执行文件
06 , 执行 source profile 使其配置立即生效
source /etc/profile
07 , 执行 java -version 查看是否安装成功

3.   修改机器名

sudo gedit /etc/hostname

修改hosts

sudo gedit /etc/hosts

修改为 node1 node2 node3

4.   安装SSH

sudo apt-get install openssh-server 

启动

~$ sudo /etc/init.d/ssh start  

查看是否正确启动

ps -e | grep ssh  

     5. SSH 无密码登陆

首先将机器用户转变为hadoo,以防权限问题

su - hadoop

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

1.创建ssh-key

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

或者

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

测试能否无密码登陆

Ssh localhost

3. 把hadoop02中的id_rsa.pub拷贝到hadoop01中

hadoop02@ubuntuserver2:~/.ssh$

 scp id_rsa.pub  hadoop01@192.168.1.135:/home/hadoop01

注意:hadoop01@192.168.1.135在ubuntu操作系统中必须这样写,否则就会出现 错误。这可能跟其他的linux操作系统不同,hadoop01是你的登录名,192.168.1.135 是IP地址。

这样就可以传递成功!

hadoop01@hadoop-master:~$ cat id_rsa.pub >> .ssh/authorized_keys

注意这个要在/hadoop01目录中,完成这部之后,hadoop02访问hadoop01就不需 要密码访问了。

测试一下:在hadoop02中,ssh hadoop01@192.168.1.135  测试一下是否直接可以控制hadoop01了!

   6. 安装vmware-tools

Sudo tar xzvf /home/hadoop/vmtools.tar.gz  

Sudo vmware-tools-distrib/vmware-install.pl

一路回车

   7.为了方便配置,修改hosts 用域名代替IP

    Sudo gedit /etc/hosts

192.168.1.101 node1

192.168.1.102 node2

192.168.1.103 node3

二、安装hadoop2.0.4

1.解压

01. 假设hadoop--2.0.4.tar.gz在桌面,将它复制到安装目录 /usr/local/下;

1

sudo cp hadoop--2.0.4.tar.gz /home/hadoop

02. 解压hadoop-0.20.203.tar.gz;

1

2

cd /usr/local

sudo tar -zxf hadoop--2.0.4.tar.gz

03. 将解压出的文件夹改名为hadoop;

1

sudo mv hadoop-2.0.4 hadoop

04. 将该hadoop文件夹的属主用户设为hadoop,

1

sudo chown -R hadoop:hadoop hadoop

   2.配置环境变量

export HADOOP_DEV_HOME=/home/hadoop/hadoop
export PATH=$PATH:$HADOOP_DEV_HOME/bin
export PATH=$PATH:$HADOOP_DEV_HOME/sbin
export HADOOP_MAPARED_HOME=${HADOOP_DEV_HOME}
export HADOOP_COMMON_HOME=${HADOOP_DEV_HOME}
export HADOOP_HDFS_HOME=${HADOOP_DEV_HOME}
export YARN_HOME=${HADOOP_DEV_HOME}
export HADOOP_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
export HDFS_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop

     3.配置hadoop

创建并配置hadoop-env.sh

vim /home/hadoop/hadoop/etc/hadoop/hadoop-env.sh
在末尾添加 export JAVA_HOME=/usr/java/jdk1.6.30

        core-site.xml

        在 configuration 节点 里面添加属性

<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://node1:9000</value>
</property>

添加 httpfs 的 选项
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>node1</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>


slave配置

vim /home/hadoop/hadoop/etc/hadoop/slaves
添加 slave 的 IP
node2

Node3


配置hdfs-site.xml

vim /home/hadoop/hadoop/etc/hadoop/hdfs-site.xml
添加 节点

<!-- fu ben shu -->

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

<property>

<name>dfs.namenode.name.dir</name>

<value>file:///home/hadoop/cloud/hdfs204/name</value>

<final>true</final>

</property>

<property>

<name>dfs.dataname.data.dir</name>

<value>file:///home/hadoop/cloud/hdfs204/data</value>

<final>true</final>

</property>

<!--备份-->

<property>

<name>dfs.federation.nameservice.id</name>

<value>ns11</value>

</property>

<property>

<name>dfs.namenode.backup.address.ns11</name>

<value>node1:50100</value>

</property>

<property>

<name>dfs.namenode.backup.http-address.ns11</name>

<value>node1:50105</value>

</property>

<!--namenode  ns1-->

<property>

<name>dfs.federation.nameservices</name>

<value>ns1</value>

</property>

<property>

<name>dfs.namenode.rpc-address.ns1</name>

<value>node1:9000</value>

</property>

<property>

<name>dfs.namenode.http-address.ns1</name>

<value>node1:23001</value>

</property>

<property>

<name>dfs.namenode.secondary.http-address.ns1</name>

<value>node1:23002</value>

</property>
配置yarn-site.xml

添加 节点

<!-- Site specific YARN configuration properties -->

<!--ResourceManager host:port for clients to submit jobs -->

<property>

<name>yarn.resourcemanager.address</name>

<value>node1:18040</value>

</property>

<!--ResourceManager host:port for ApplicationMasters to talk to Scheduler to obtain resources-->

<property>

<name>yarn.resourcemanager.scheduler.address</name>

<value>node1:18030</value>

</property>

<!--ResourceManager web-ui host:port.-->

<property>

<name>yarn.resourcemanager.webapp.address</name>

<value>node1:18088</value>

</property>

<!--ResourceManager host:port for NodeManagers.-->

<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>node1:18025</value>

</property>

<!--ResourceManager host:port for administrative commands.-->

<property>

<name>yarn.resourcemanager.admin.address</name>

<value>node1:18141</value>

</property>

<!--Shuffle service that needs to be set for Map Reduce applications.-->

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce.shuffle</value>

</property>

移植

      要将master机器上的文件一一复制到datanode机器上(node2,node3都要复制):(这里以son-1为例子)

1. 公钥的复制

 scp ~/.ssh/id_rsa.pub hadoop@node2:~/.ssh/

2. hosts文件的复制

 scp /etc/hosts hadoop@node2:/etc/hosts

注:这里如果不能复制,就先将文件复制到/home/hadoop下面,即为:

/home/hadoophadoop@node2: scp /etc/hosts

再在datanode机器上将其移到相同的路径下面/etc/hosts .

3. hadoop文件夹的复制,其中的配置也就一起复制过来了!

 scp -r /home/hadoop/hadoop hadoop@node2:/home/hadoop

如果不能移动的话和上面的方法一样!

并且要将所有节点的hadoophome/hadoop权限进行如下的修改:

 sudo chown -R hadoop:hadoop hadoop

这些东西都复制完了之后,datanode机器还要将复制过来的公钥追加到收信任列表:在每个子节点的自己种都要操作。

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

还有很重要的一点,子节点datanode机器要把复制过来的hadoop里面的data1,data2和logs删除掉! 如果不删掉会面临有时启动datanode的时候,其它从节点的datanode先启动然后自动停止的问题

还有要修改其它的java的环境变量地址,

配置从节点的/home/hadoop/hadoop/etc/hadoop/hadoop-env.sh(找到#export JAVA_HOME=...,去掉#,然后加上本机jdk的路径);这个环境不一,自己配置一下。

这样环境已经基本搭建好了,现在开始测试一下。

格式化集群

hadoop namenode -format -clusterid clustername


启动hdfs执行
start-dfs.sh

开 启 hadoop dfs服 务     


启动Yarn

开 启 yarn 资 源管理服 务
start-yarn.sh

 

启动httpfs

开 启 httpfs 服 务
httpfs.sh start
使得 对外 可以提高 http 的restful接口服 务

在hadoopnode1上,创建输入目录 :hadoop fs -mkdir hdfs://192.168.1.151:9000/input
将 /home/hadoop/hadoop-2.0.4-alpha/ 目 录下的所有 txt 文件复制到 hdfs 分布式文件系 统的目录里,执行以下命令
$hadoop fs -put /home/hadoop/hadoop-2.0.4-alpha/*.txt hdfs://192.168.1.151:9000/input

在 hadoopnode1 上, 执行 HADOOP 自 带的例子, wordcount 包,命令如下
$cd /home/hadoop/hadoop-2.0.4-alpha/share/hadoop/mapreduce
$yarn jar hadoop-mapreduce-examples-2.0.4-alpha.jar wordcount hdfs://192.168.1.151:9000/input hdfs://192.168.1.151:9000/output

在 hadoop1 上, 查看结果命令如下 :
$ hadoop fs -ls hdfs://192.168.1.151:9000/output
Found 2 items

-rw-r--r--   2 hadoop supergroup          0 2013-05-01 19:34 hdfs://192.168.1.151:9000/output/_SUCCESS

-rw-r--r--   2 hadoop supergroup       8739 2013-05-01 19:34 hdfs://192.168.1.151:9000/output/part-r-00000

$ hadoop fs -cat  hdfs://192.168.1.151:9000/output/part-r-00000 即可看到每个 单词的数量

运行wordcount例子时注意命令:    yarn jar hadoop-mapreduce-examples-2.0.4-alpha.jar wordcount /input   /output ;此前版本是用: hadoop  jar hadoop-mapreduce-examples-2.0.4-alpha.jar wordcount /input   /output ,现在不能用了,如果用hadoop 命令 会报 内存溢出的问题,本人遇到这问题时查了好长时间资料也查不到问题,百思不得解,直到看了一些大神的 命令才恍然大悟, 请大家不要走弯路; 

本文是根据网上好多大神的资料 然后 结合自己实际情况搭建出来的,感谢网上那些无私的开源大神!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值