最近几天在忙参加一个云计算比赛,之前也在Ubuntu上配成功过hadoop,不过是按照书上讲的,一步一步来的。因此,印象不深,对自己的帮助也不大。这次趁着机会,自己练了两遍配置过程,感觉收获比较丰富,就写一篇文章小结一下。
首先要把给我很多指导的一个网址贴出来:厦门大学数据库实验室博客 http://dblab.xmu.edu.cn/blog/。作为一个数据库实验室,能有精力和热情做好这么一个网站,真的很崇拜他们。另外,写着篇文章的另一个目的是网上不同版本的ubuntu配置Hadoop文章实在太多,不同的人有不同的方法,不同的版本配置方法也都有差异,因此之前也因为这个走了不少弯路,失败了好多次。写下这个,就是我真的,,,把系统配好了,可以作为经验被别人使用。
环境:
系统:Ubuntu Kylin 14.04LTS版本(不得不说,相比原始的系统,这个中国定制版麒麟实在是好看和好用多了)
Hadoop 2.6.0
jdk1.8.0_25
步骤:
1. 创建Hadoop用户
创建用户
sudo adduser -m hadoop -s /bin/bash
设置密码
sudo passwd hadoop
为hadoop用户创建目录
cd /home sudo mkdir hadoop sudo chown hadoop /home/hadoop
为hadoop用户授予管理员权限,这样方便以后的操作
sudo adduser hadoop sudo
注销当前用户,登录hadoop用户
2. 安装SSH
SSH(Secure Shell)是目前比较可靠的为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。通过SSH,可以把所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。
安装SSH server
sudo apt-get install openssh-server
设置SSH无密码登陆
ssh localhost
有如下提示(SSH首次登陆提示),输入yes
配置成无密码登陆:
先输入 exit 退出ssh,然后执行如下命令
cd ./.ssh # 如果没有该目录,先执行一次ssh localhost ssh-keygen -t rsa # 一直按回车就可以,生成的密钥保存为.ssh/id_rsa cp id_rsa.pub authorized_keys
再用ssh localhost
命令,就可以直接登陆了
3. 配置jdk
首先介绍厦大数据库实验室博客介绍的方法:
sudo apt-get install openjdk-7-jre openjdk-7-jdk
这种方法可以直接在终端安装好jdk,不过在尝试之后报错,,,由于水平不高,没有找到错在哪里。
第二种方法是我是用的。首先在Oracle官网上下载jdk安装包,我下载的是jdk-8u25-linux-x64.tar.gz 解压之后是jdk1.8.0_25文件夹,存在主文件夹中。
然后将该文件夹拷贝到/usr/lib/jvm
sudo cp -r ~/jdk1.8.0_25 /usr/lib/jvm
然后更名为java-8u5-sun
sudo mv /usr/lib/jvm/jdk1.8.0_25 /usr/lib/jvm/java-8u5-sun
之后配置环境变量
sudo gedit ~/.bashrc
在文件的末尾加上
export JAVA_HOME=/usr/lib/jvm/java-8u5-sun
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
其中,JAVA_HOME存放的是java安装的路径。
然后,使上述配置生效
source ~/.bashrc
这时,jdk的配置工作基本结束,可以在终端输入java来验证,若终端输出java命令的后缀解释,则表明安装成功
4. 安装Hadoop
首先到Apache官网下载Hadoop,我下载的是Hadoop2.6.0 压缩包名称:hadoop-2.6.0.tar.gz 解压缩后为hadoop-2.6.0
将文件夹拷贝到/usr/local/hadoop中
sudo mv ~/hadoop-2.6.0/ /usr/local/hadoop # 将文件名改为hadoop sudo chown -R hadoop:hadoop /usr/local/hadoop # 修改文件权限
修改环境变量信息JAVA_HOME
cd /usr/local/hadoop gedit etc/hadoop/hadoop-env.sh
将 export JAVA_HOME=${JAVA_HOME}
改为
export JAVA_HOME="/usr/lib/jvm/java-8u5-sun"
输入如下命令Hadoop检查是否可用,成功则会显示命令行的用法
bin/hadoop
5. Hadoop伪分布设置
修改配置文件etc/hadoop/core-site.xml,将
<configuration> </configuration>
改为:
<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
修改配置文件etc/hadoop/hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/dfs/data</value> </property> </configuration>
配置完成后,首先在 Hadoop 目录下创建所需的临时目录:
cd /usr/local/hadoop mkdir tmp dfs dfs/name dfs/data
初始化文件系统HDFS
bin/hdfs namenode -format
开启NameNode等进程
sbin/start-dfs.sh
输入jps,以检查各个节点是否就绪。若此时DataNode等节点没有开启,则重新初始化,重新start
到此为之,Hadoop的配置工作完成。
下一篇介绍在Ubuntu环境中编译和运行Hadoop程序的步骤