网上大多数类似文章都基于hadoop0.02,现在hadoop版本升级,本人经实践,写下本文,其中不少地方参考了前辈的经验,在此致谢,并声明copy之处只为技术交流。
1.环境
ubuntu 12
hdoop 1.1.2
2,创建hadoop用户组;
1
|
sudo
addgroup hadoop
|
2. 创建hadoop用户;
1
|
sudo
adduser -ingroup hadoop hadoop
|
sudo
gedit
/etc/sudoers
按回车键后就会打开/etc/sudoers文件了,给hadoop用户赋予root用户同样的权限。
在root ALL=(ALL:ALL) ALL下添加hadoop ALL=(ALL:ALL) ALL,
1
|
hadoop ALL=(ALL:ALL) ALL
|
4.安装JDK
linux下的java有两种一个是openjdk一个sun的。因为一些原因,Sun Java 无法从 Ubuntu 的软件库里面取得
取而代之的是 OpenJDK,不过 OpenJDK 跑某些程序会出现问题所以还是需要 Sun Java
下面说说在 Ubuntu 12.04 安装 Sun Java 的方法:
(1)如何错误安装了openjdk,首先删除掉已经安装的openjdk
sudo apt-get purge openjdk*
(2)$ sudo apt-add-repository ppa:flexiondotorg/java
(3)$ sudo apt-get update
(4)$ sudo apt-get install sun-java6-jre sun-java6-jdk sun-java6-plugin
(5)配置JAVA环境变量:(具体路径根据你安装的jdk路径修改)
sudo gedit /etc/environment
在path变量后追加jdk路径(分号后面,冒号前面)
:/usr/lib/jvm/java-6-sun-1.6.0.30/bin
在path下添加两行
CLASSPATH=.:/usr/lib/jvm/java-6-sun-1.6.0.30/lib
JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.30
保存退出,输入以下命令使之立即生效
sudo source /etc/environment
(6)配置默认jdk(具体路径根据你安装的jdk路径修改)
由于Ubuntu中可能会有默认的JDK,如openjdk,所以,为了将我们安装的JDK设置为默认JDK版本,还要进行如下工作
sudo update-alternatives --install /usr/lib/jvm/java-6-sun-1.6.0.30/bin/java 300
sudo update-alternatives --instal l/usr/lib/jvm/java-6-sun-1.6.0.30/bin/javac 300
sudo update-alternatives --install /usr/lib/jvm/java-6-sun-1.6.0.30/bin/jar 300
执行
sudo update-alternatives --config java
系统会列出各种JDK版本,如下所示:
有 3 个候选项可用于替换 java (提供 /usr/bin/java)。
选择 路径 优先级 状态
------------------------------------------------------------
*0 /usr/bin/gij-4.6 1046 自动模式
1 /usr/bin/gij-4.6 1046 手动模式
2 /usr/lib/jvm/java-6-sun-1.6.0.30/bin/java 300 手动模式
3 /usr/lib/jvm/java-6-sun/jre/bin/java 63 手动模式
要维持当前值[*]请按回车键,或者键入选择的编号:2
(7)java -version查看不出错说明,成功。
aaaf@aaa-K42JZ:~$ java -version
java version "1.6.0_30"
Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
Java HotSpot(TM) Server VM (build 20.5-b03, mixed mode)
5.安装ssh服务
ssh可以实现远程登录和管理,具体可以参考其他相关资料。
(1)安装openssh-server;
1
|
sudo
apt-get
install
ssh
openssh-server
|
(2)配置ssh无密码登录本机
创建ssh-key,这里我们采用dsa方式;
1
|
ssh
-keygen -t dsa -P ''
|
回车后会在/home/hadoop/.ssh/下生成两个文件:id_rsa和id_rsa.pub.这两个文件是成对出现的,查看两个文件
aaa@aaa-K42JZ:~# cd /home/hadoop/.ssh
aaa@aaa-K42JZ:/home/hadoop/.ssh# ls -a
. .. authorized_keys id_dsa id_dsa.pub known_hosts
进入~/.ssh/目录下,将id_rsa.pub追加到authorized_keys授权文件中,开始是没有authorized_keys文件的;
1
|
cd /home/hadoop/.ssh
cat
id_dsa.pub >> authorized_keys
|
aaa@aaa-K42JZ:~$ ssh -version
OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
登录localhost;
1
|
ssh
localhost
|
执行退出命令;
1
|
exit
|
(1). 假设hadoop-1.1.2.tar.gz在桌面,将它复制到安装目录 /usr/local/下;
1
|
sudo
cp hadoop-1.1.2.tar.gz
/usr/local/
|
(2). 解压hadoop-1.1.2.tar.gz;
1
2
|
cd
/usr/local
sudo
tar
-zxf h hadoop-1.1.2.tar.gz
|
(3). 将解压出的文件夹改名为hadoop;
1
|
sudo
mv
hadoop-1.1.2 hadoop
|
(4). 将该hadoop文件夹的属主用户设为hadoop,
1
|
sudo
chown
-R hadoop:hadoop hadoop
|
(5). 打开hadoop/conf/hadoop-env.sh文件;
1
|
sudo
gedit hadoop
/conf/hadoop-env
.sh
|
(6). 配置conf/hadoop-env.sh(找到#export JAVA_HOME=...,去掉#,然后加上本机jdk的路径);
1
|
export JAVA_HOME=/usr/lib/jvm/java-6-jdk
|
1
|
sudo
gedit hadoop
/conf/core-site
.xml
|
修改如下:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
(8). 打开conf/mapred-site.xml文件;
1
|
sudo
gedit hadoop
/conf/mapred-site
.xml
|
修改如下<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
(9). 打开conf/hdfs-site.xml文件;
1
|
sudo
gedit hadoop
/conf/hdfs-site
.xml
|
编辑如下
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration> <property>
<name>hadoop.tmp.dir</name>
<value>/home/gqy/hadoop</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/gqy/hadoop/data</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/gqy/hadoop/name</value>
</property>
新建data目录时
要把data的权限设成755
~/hadoop$ sudo chmod 755 /home/gqy/hadoop/data
否则在格式化HDFS时会出错,在log可以观察到
2013-06-30 09:00:40,121 WARN org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Source name ugi already exists!
2013-06-30 09:00:40,218 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Invalid directory in dfs.data.dir: Incorrect permission for /usr/local/hadoop/hdfsconf/data, expected: rwxr-xr-x, while actual: rwxrwxr-x
2013-06-30 09:00:40,218 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: All directories in dfs.data.dir are invalid.
7. 在单机上运行hadoop
1. 进入hadoop目录下,格式化hdfs文件系统,初次运行hadoop时一定要有该操作,
1
2
|
cd
/usr/local/hadoop/
bin
/hadoop
n amenode -
format
|
2. 当你看到下图时,就说明你的hdfs文件系统格式化成功了。
3. 启动bin/start-all.sh
1
|
bin
/start-all
.sh
|
4. 检测hadoop是否启动成功
1
|
jps
|
aaa@aaa-K42JZ:jps
6755 Jps
5432 TaskTracker
4866 DataNode
4638 NameNode
5109 SecondaryNameNode
5201 JobTracker
如果都列出来,说明搭建成功,漏一个都是有问题的,
如果都列出来,说明搭建成功,漏一个都是有问题的,然后可以通过firefox浏览器查看mapreduce的web页面,使用http://localhost:50030/
hdfs的web 页面
http://localhost:50070/
本人菜鸟,自己动手实践过,欢迎志同道合的朋友一起学习,有问题可以给q我:1254135965
下一篇准备写hadoop1.1.2上运行第一个hadoop程序wordcount