Ubuntu搭建Hadoop环境

主要参考这两篇文章:

ubuntu13.04环境hadoop1.2.1单机模式安装http://www.cnblogs.com/yjmyzz/p/3378192.html

hadoop1.2.1伪分布模式配置http://www.cnblogs.com/yjmyzz/p/3380627.html

我本机环境是Ubuntu12.04,效果一样,这里把我配置过程遇到的问题记录下来,并对某些地方再解释下


 

一、安装 JDK 1.7.0_45

官网下载JDK7:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

1、 cd /usr/ (注:进入usr目录)

2、sudo mkdir /usr/java (注:在usr下创建java目录)

3、sudo cp /home/jimmy/Downloads/jdk-7u45-linux-x64.tar.gz /usr/java/ (注:将下载的jdk压缩文件,移动到/usr/java下,这里jimmy是ubuntu的用户名,这里根据实际情况换成自己的用户名)

4、sudo tar -zxf jdk-7u45-linux-x64.tar.gz (注:解压)

5、sudo gedit ~/.bashrc (注:修改根目录下的bashrc文件,以便设置java环境变量)

在bashrc最后追加以下内容:

export JAVA_HOME=/usr/java/jdk1.7.0_45

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

6、关掉当前的终端窗口,再新开一个终端窗口(以便让刚才的环境变量起作用)

7、验证java是否安装正确

输入命名:java -version

如果能正确显示java的版本号,就说明java环境已经具备了

输入命名:echo $JAVA_HOME

如果能正确显示JAVA_HOME的路径,说明环境变量正常



二、安装 openssh-server

申明:ssh服务可以先不管,等到后面配置hadoop分布式服务时再配置也可以

先测试你是否安装了 ssh 服务:ps -e|grep ssh

如果有 ssh-agentt 和 sshd 这些服务,说明你已经安装过了

1、安装ssh服务

sudo apt-get install openssh-server

我本机Ubuntu12.04 版本较老,也一直没更新,在使用 apt-get 命令时得先更新apt-get

一般来说使用 apt-get clean 清除,然后再 apt-get update 或者 apt-get update && apt-get upgrade 能解决问题

2、配置 localhost 无密码登录

因为伪分布模式下,即使所有节点都在一台机器上,hadoop也需要通过ssh登录,这一步的目的是配置本机无密码ssh登录

$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa  (注:这里 -P '' 紧接着一个空串,意思是设置密码为空
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys (注:将刚才ssh生成的秘钥库授权)

3、测试登录  ssh localhost

如果不要求你输入密码就登录成功,那就OK了

如果仍然要你输入密码,可以这样:ssh-add  ~/.ssh/id_rsa

这样就把你刚才创建的秘钥加进来了,再试试 ssh localhost 登录
4、退出登录

在当前Terminal终端输入 exit 就退出了,控制台会打印 logout 消息

5、如果ssh服务已经退出,可以这样启动

sudo /etc/init.d/ssh start   或者 service ssh start
ssh-server 配置文件位于/etc/ssh/sshd_config,可以定义SSH的服务端口,默认端口是22,你可以自己定义成其他端口号,如222。
然后重启SSH服务:
/etc/init.d/ssh stop   (停止)
/etc/init.d/ssh start   (启动)

三、安装 hadoop 1.2.1 稳定版

官网下载1.2.1版本 :http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-1.2.1/

1、先创建hadoop目录

mkdir hadoop (比如我创建在 /root/hadoop 这个目录)

2、将下载好的hadoop压缩包移到刚刚创建的目录下

sudo cp /root/Downloads/hadoop-1.2.1.tar.gz   /root/hadoop

3、解压

cd hadoop

sudo tar -zxf hadoop-1.2.1.tar.gz

默认情况下,会解压至hadoop\hadoop-1.2.1目录

4、修改hadoop环境变量

(1)先取得hadoop-1.2.1的读写权限,这里jimmy换成自己的用户名.

sudo chown -R jimmy hadoop-1.2.1 (如果你已经是root账户就没必要执行了!

(2)编辑conf下的配置文件

gedit /root/hadoop/hadoop-1.2.1/conf/hadoop-env.sh

找到#export JAVA_HOME这一行,去掉注释,变设置成正确的路径,即:

# The java implementation to use. Required.

export JAVA_HOME=/usr/java/jdk1.7.0_45

5、验证hadoop是否正常运行

cd hadoop-1.2.1

bin/hadoop version

正常情况下,会显示hadoop的版本号之类

6、运行wordcount 示例程序(进入hadoop根目录)

mkdir input (先创建input目录)

cp conf/* input (将conf下的所有文件,复制到input目录下)

bin/hadoop jar hadoop-example-1.2.1.jar wordcount input output (运行wordcount程序,并将结果写入output目录下)

cat output/* (查看输出结果)

后记:以上操作,也适用于mac os、cent os,不过有些细节要注意

mac os上JAVA_HOME的路径为:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

如果找不到java的目录,但是java -version 又能正常显示java版本号,可先执行 export JAVA_HOME=`/usr/libexec/java_home`

然后再 echo $JAVA_HOME就能看到当前jdk的路径了

cent os上apt-get命令要改为 yum

cent os上查看是不是64位:getconf LONG_BIT

hadoop群集配置,可参考 http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html

 

************************** 接下来介绍在单机模拟伪分布式hadoop配置,并运行示例 *********************

一、修改core-site.xml,配置hdfs

<span style="font-family:Microsoft YaHei;font-size:12px;"><configuration>
 <property>
  <name>fs.default.name</name>
  <value>hdfs://localhost:9000</value>
 </property>
 <property>
  <name>hadoop.tmp.dir</name>
  <value>/home/jimmy/Desktop/tmp</value>
 </property>
</configuration></span>


a) fs.default.name对应的value是hdfs的ip和端口,只要端口不被占用即可
b) hadoop.tmp.dir对应的value是hadoop临时文件的保存目录(根据需要修改成实际目录)

 

二、修改hdfs-site.xml,配置数据备份

<span style="font-family:Microsoft YaHei;font-size:12px;"><configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration></span>

注:这是配置写数据时,数据同时写几份(出于学习目的,这里只写一个副本,实际应用中,至少配置成3)

三、修改mapred-site.xml

<span style="font-family:Microsoft YaHei;font-size:12px;"><configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>localhost:9001</value>
    </property>
</configuration></span>

注:这是配置map/reduce服务器ip和端口

 

四、首次运行,格式化hdfs

/root/hadoop/hadoop1.2.1/bin/hadoop namenode -format

 注意:你自己安装的hadoop目录

 

五、启动单节点集群

/root/hadoop/hadoop1.2.1/bin/hadoop start-all.sh

如果没问题的话,直接在终端输入 jps,可以看到5个进程:

13299 TaskTracker
13071 SecondaryNameNode
13363 Jps
13160 JobTracker
12786 NameNode
12926 DataNode

 

六、停止hadoop服务

/root/hadoop/hadoop1.2.1/bin/hadoop stop-all.sh

 

七、查看状态

http://localhost:50030/    这是Hadoop管理界面

http://localhost:50060/    这是Hadoop Task Tracker 状态

http://localhost:50070/    这是Hadoop DFS 状态

 

八、伪分布模式下运行Hadoop自带的wordcount

注:以下命令的当前目录都是hadoop根目录

a) 先随便准备一个txt文件,比如hadoop下自带的README.txt

b) hdfs中创建一个输入目录 input

bin/hadoop fs -mkdir input (注:hdfs中的命令跟linux终端中的文件操作命令基本类似,但是前面要加fs)

c) 将README.txt放到hdfs的input目录中

bin/hadoop fs -put ./README.txt input

这时,如果在浏览器里用http://localhost:50070/ 浏览hdfs文件列表的话,可以看到刚才放进去的文件

d)执行wordcount示例程序

bin/hadoop jar hadoop-examples-1.2.1.jar wordcount /user/jimmy/input/README.txt /user/jimmy/output (注:这里的jimmy为hadoop运行时的用户名,根据需要换成自己的实际用户名)

这里强调下这两个目录:/user/jimmy/input/README.txt  和 /user/jimmy/output    

这并不是linux机器的目录,而是 hdfs 的目录,你可以到 http://localhost:50070/    也就是 hdfs 管理控制台看得到

e)从hdfs中取回文件到本地

bin/hadoop fs -get /user/jimmy/output ~/Desktop/ (这样,就把运算结果output中的文件,取到本地桌面了)

同样的注意这个目录是hdfs的目录

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值