Ubuntu14.04 安装配置Hadoop2.6.0
目前关于Hadoop的安装配置教程书上、官方教程、博客都有很多,但由于对Linux环境的不熟悉以及各种教程或多或少有这样那样的坑,很容易导致折腾许久都安装不成功(本人就是受害人之一)。经过几天不断尝试,终于成功了。现将整个关于Hadoop的安装配置步骤分享出来,一方面为了希望能对有需要的朋友有所帮助,一方面为了总结所遇到的问题和解决方案。接下来开始正文。
准备工作
提前下载好以下工具:
- JDK安装包
- Eclipse安装包
- Hadoop安装包
- Eclipse的Hadoop插件
本人用的JDK版本是1.7.0_67,Hadoop使用的是2.6.0版。Eclipse是官网上最新的jee版。以上都准备好后,开始安装。
安装SSH和SSH无密登录
安装SSH server
很多教程都有要求创建新用户,个人觉得并不是必须的,所以并没有创建新的用户。Hadoop的分布式模式和单节点模式都需要用到SSH登录,而Ubuntu已经默认安装了SSH client,所以只要再安装一下SSH server即可。打开终端(ctrl+alt+t)输入命令:
sudo apt-get install openssh-server
然后回车即可。
注意
如果不成功,提示以下之类的错误:
E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
可以尝试依次输入以下两个命令强制解锁:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
解锁后,再次输入安装SSH server命令安装SSH server。
安装完成后,可以使用下面的命令登录本机:
ssh localhost
根据提示输入用户密码,即可登录本机。
SSH无密登录
虽然上面的方法可以登录本机,但显然很麻烦,每次都需要输入密码,因此我们设置成SSH无密码登录。
首先退出上面的SSH,然后利用ssh-keygen生成密钥,并将密钥加入到授权中:
exit
cd ~/.ssh/
ssh-keygen -t rsa
cat id_rsa.pub >> authorized_keys
注意:如果cd ~/.ssh/ 后提示没有该目录,请先登录一次本机,再执行上面的命令。ssh-keygen -t rsa 命令后会有多个提示,全部只要按回车即可。
此时再用ssh localhost命令,就不需要密码即可直接登录本机了。
安装JDK
首先进入到jdk tar.gz所在的文件目录,我的是在Downloads目录下,所以命令是
cd ~/Downloads
然后将tar.gz文件解压到安装目录,我的jdk压缩包名是jdk-7u67-linux-x64.tar.gz,而且我希望它安装在/usr/local目录下,所以命令是
sudo tar zxvf jdk-7u67-linux-x64.tar.gz -C /usr/local
然后进入到/usr/local目录下
cd /usr/local
再输入
ls
即可看到里面包含一个叫jdk1.7.0_67类似的文件(文件名与所安装的JDK版本有关)
解压完毕后,就是配置环境变量了。关于环境变量的配置多种方法,我采用的是在 /.bashrc文件中配置。
利用命令:
sudo gedit ~/.bashrc
在打开的文件的末尾添加以下信息:
export JAVA_HOME=/usr/local/jdk1.7.0_67 #这里添加的是jdk所在的安装目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
我的添加如下:
保存后关闭,进入终端,source一下。
source ~/.bashrc
接下来设置默认的JDK
sudo update-alternatives --install /usr/bin/java java /usr/local/jdk1.7.0_67/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/local/jdk1.7.0_67/bin/javac 300
设置完成后,输入java -version查看jdk信息。
查看到如上信息,说明jdk安装成功。
Hadoop安装
Hadoop的安装是递进的,即首先安装单机模式,然后在单机模式的基础上,配置伪分布式模式和分布式模式。
单机模式
将Hadoop tar.gz文件解压到目的安装目录,我的想安装在/usr/local 文件目录下。所以命令是
sudo tar zxvf hadoop-2.6.0.tar.gz -C /usr/local
当然在解压之前,要先进入到Hadoop tar.gz文件所在的目录。
解压完毕后,进入到/usr/local目录
cd /usr/local
将文件夹hadoop2.6.0的名字修改为haoop
sudo mv hadoop2.6.0 hadoop
接着最好修改一下hadoop文件夹的权限,将文件夹的权限修改为想使用hadoop的用户,我的是lxy:
su root
chown -R lxy ./hadoop
如果是第一次使用root用户,请先设置root的登录密码:
sudo passwd root
输入两次密码后,再次su root,提示输入root密码。
至此,单机模式Hadoop安装完毕。为了验证安装是否成功,我们可以通过以下命令运行hadoop的自带例子:
cd /usr/local/hadoop
sudo mkdir input
sudo cp ./etc/hadoop/*.xml input
./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
cat ./output/*
执行成功后会有如下提示,输出结果是符合正则的单词dfsadmin出现了1次。
由于Hadoop默认不会覆盖结果文件,所以当再次运行以上实例时,会出错,需要将output删除。
sudo rm -R ./output
如果运行时提示Java之类的错误,则需要配置下hadoop-env.sh文件,配置方法在接下来的内容中。
伪分布式
为了能够随时使用Hadoop命令,配置一下Hadoop的环境变量。方法与JDK一样,有三种方式。这里为了保持一致,在~/.bashrc中配置。
打开~/.bashrc
sudo gedit ~/.bashrc
在文件末尾添加:
#set hadoop environment
export HADOOP_INSTALL=/usr/local/hadoop #hadoop的安装目录
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
保存后关闭。
使用 source ~/.bashrc 使配置生效。
Hadoop伪分布式模式仅仅需要比单机模式多了修改三个配置文件而已。
进入到以下文件目录
cd /usr/local/hadoop/etc/hadoop
首先修改hadoop-env.sh文件
sudo gedit hadoop-env.sh
在打开的文件中找到JAVA_HOME的位置,将等号右边的部分修改为jdk的安装目录(也可以是用“#”将这段注释掉,重新写)
保存后关闭。
接着配置文件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>
保存后关闭。
最后同样的方式,修改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/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
保存后关闭。
关于配置的简单说明
虽然官方教程中说只需要配置 fs.defaultFS 和 dfs.replication 就可以运行,不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,但该目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。因此我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。
配置完成后,首先执行一次namenode的格式化
hdfs namenode -format
成功后,会看到successfully formatted的提示,并且可以看到 Exitting with status 0。
然后开始启动NameNode和DataNode
start-dfs.sh
如果出现提示Are you sure you want to continue connecting (yes/no)? 输入yes即可。
注意
这一步启动hadoop或者前面几步有提示:Error: JAVA_HOME is not set and could not be found. 请再次确认前面的/usr/local/hadoop/etc/hadoop/hadoop-env.sh有修改JAVA_HOME。
启动完成后,可以通过命令jps来判断是否成功,如果成功启动,则会出现以下进程
注意
如果执行jps后提示:“程序"jps"已经包含在下列软件包中.....”之类的提示,英文版系统,则是英文提示,执行以下命令即可
sudo update-alternatives --install /usr/bin/jps jps /usr/local/jdk1.7.0_79/bin/jps 1
如果之前没有配置系统默认JDK,请再次输入以下命令,有配置则忽略。
sudo update-alternatives --install /usr/bin/java java /usr/local/jdk1.7.0_67/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/local/jdk1.7.0_67/bin/javac 300
如果SecondaryNameNode没有启动,请运行stop-dfs.sh 关闭进程,然后再次尝试启动尝试;如果 NameNode 或 DataNode 没有启动,请仔细检查之前步骤。
成功启动后,可以访问 Web 界面http://localhost:50070 来查看 Hadoop 的信息。
运行一个hadoop伪分布式实例
首先创建一个hdfs 用户目录
hdfs dfs -p /user/lxy
接着在该目录下创建一个input文件
hdfs dfs -mkdir input
接着将 etc/hadoop 中的文件作为输入文件复制到分布式文件系统中,即将 /usr/local/hadoop/etc/hadoop 复制到分布式文件系统中的 /user/lxy/input 中。上一步已创建了用户目录 /user/lxy,因此命令中就可以使用相对目录如 input,其对应的绝对路径就是 /user/hadoop/input。
hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input
复制完成后,可以通过以下命令查看文件列表
hdfs dfs -ls input
伪分布式运行 MapReduce 作业的方式跟单机模式相同,区别在于伪分布式读取的是HDFS中的文件(可以将单机步骤中创建的本地 input 文件夹删掉以及运行结果来验证这一点)。
hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
查看运行结果命令
hdfs dfs cat output/*
这里的output是在hdfs目录上的,其绝对路径是/user/lxy/output。
结果如下,因为配置修改了,所以结果和单机模式结果不同。
Hadoop程序运行过程中,默认目录不能存在,因此再次删除output文件夹
hdfs dfs -rm -r /user/lxy/output
注意
在创建目录时,请将"lxy"替换成自己使用hadoop的用户名。虽然不替换也可以,但却无法使用相对路径(我也不知道原因)。比如说我的用户名是lxy,但想创建/user/hadoop目录。然后执行后面的命令
hdfs dfs -p /user/hadoop
hdfs dfs -mkdir input
则会出现如下"No such file or dictionary"的错误提示。
此时必须使用绝对路径,才能成功。也就是说将input全部改成/user/hadoop/input才可以。
如果要关闭Hadoop,则运行stop-all.sh命令或者stop-dfs.sh命令即可。
注意
下次再次启动Hadoop(使用start-all.sh或者start-dfs.sh命令)时,不需要进行namenode的初始化了。
至此,Hadoop的伪分布式配置和使用,您已经掌握了。
安装Eclipse
将Eclipse的tar.gz文件解压到usr/local目录下
sudo tar zxvf ~/Downloads/eclipse-jee-mars-1-linux-x86_64.tar.gz -C /usr/local
进入usr/local目录可以看到一个eclipse文件夹
cd /usr/local
ls
可以使用下面的命令启动eclipse
/usr/local/eclipse/eclispe
虽然上面命令可以运行eclipse,但还是麻烦了些,所以我们可以创建桌面快捷方式
sudo su
sudo gedit /usr/share/applications/eclipse.desktop
在打开的文件写入以下内容
[Desktop Entry]
Name=eclipse
Comment=eclipse SDK
Encoding=UTF-8
Exec=/usr/local/eclipse/eclipse
Icon=/usr/local/eclipse/icon.xpm
Terminal=false
Type=Application
Categories=Application;Development;
保存关闭后,利用图形工具进入到/usr/share/applications/下可以看到eclipse图标
然后将该图标复制到桌面即可。
配置hadoop插件
Hadoop官网并未给出eclipse的Hadoop插件。但我们可以在网络上搜索到相应版本的插件,也可以自己编译hadoop源码后,制作插件。我就偷了下懒,直接从网上下载了。
复制插件
将插件hadoop-eclipse-plugin-2.6.0.jar文件复制到/usr/local/eclipse/plugins目录下。然后重新启动eclipse。
配置hadoop目录
打开eclipse的Windows->Perferences的Hadoop Map/Reduce中选择hadoop目录
配置插件
打开windows->Open Perspective下的Map/Reduce,在此Perspective下进行hadoop开发。
打开Windows->Show View中的Map/Reduce Locations。
在此view下右键选择New Hadoop Location,新建Hadoop连接。
上图的Location name可以自定,"9001"端口可以任意。"9000"端口对应core-site.xml中的端口。确认完成后,eclipse会连接Hadoop。如果连接成功,会在Projetct Explorer下会展现HDFS中的文件。
注意
如果提示"Error:Call From ...."的错误,说明Hadoop未开启。开启Hadoop后,然后重启eclipse后,就能出现类似上图的情况了。
至此,插件配置完毕,可以开始Hadoop旅程了。
由于本人之前并没有接触过Linux,所以整个安装过程中,出现这样或那样的问题,期间走了不少弯路。为了避免其他像我一样的朋友,能够少走弯路,所以我写了这篇文章,将hadoop安装过程以及我遇到的一些问题及解决方法分享给大家。
参考文献
Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04
在Ubuntu 14.04 LTS上安装部署Hadoop 2.7.1(伪分布式)
Ubuntu14.04 安装配置Hadoop2.6.0的更多相关文章
- Ubuntu14.04安装配置ndnSIM
Ubuntu14.04安装配置ndnSIM 预环境 Ubuntu14.04官方系统 请先使用sudo apt-get update更新一下源列表 安装步骤 安装boost-lib sudo apt-g ...
- Ubuntu14.04 安装配置Opencv3.0和Python2.7
http://blog.csdn.NET/u010381648/article/details/49452023 Install OpenCV 3.0 and Python 2.7+ on Ubunt ...
- Ubuntu14.04安装配置web/ftp/tftp/dns服务器
目录: 1.安装ftp服务器vsftpd --基于tcp,需要帐号密码 2.安装tftp服务器tftpd-hpa,tftp-hpa --udp 3.web服务器--使用Apache2+Mysql+PH ...
- Ubuntu14.04安装配置SVN及Trac
还是个实习生的时候,项目管理十分欠缺,会出现很多问题,痛定思痛,决定要改变现状,养成良好的项目管理习惯,看网上工具很多,在这里尝试使用SVN作代码版本控制,使用trac作为项目管理追踪.本文采用的操作 ...
- Ubuntu14.04安装配置Open vSwitch
最近在研究学习Open vSwitch,准备在本地Ubuntu14.04机器上安装一下,并基于其创建一些KVM虚拟机,下面就简要记录下在Ubuntu14.04系统上安装Open vSwitch的过程. ...
- ubuntu14.04安装配置jdk1.8.0_25
Reference: http://jingyan.baidu.com/article/eb9f7b6d8f82a6869364e8a7.html 今天尝试在ubuntu14.04 LTS上安装jdk ...
- ubuntu18.04安装配置opencv3.4.0
1.安装配置相关工具及依赖库 sudo apt-get install build-essential # 必须的,gcc编译环境 sudo apt-get install cmake git lib ...
- ubuntu14.04下配置使用openCV3.0
[操 作 系 统] Ubuntu 14.04 LTS [OpenCV版本] 3.0.0-beta [Eclipse 版 本] 3.8.1 需要知识: Linux系统shell命令基础 编译原理 ...
- 32位ubuntu14.04手动编译hadoop2.6.0
下载官方编译好的包安装老是报错:Unable to load native-hadoop library for your platform 用file命令查看发现官方包里的libhadoop.so. ...
随机推荐
- A题笔记(4)
No. 1384 这题没啥 不过网考成绩出了,发现我的口语分数相较其他人还挺高的~~~哈哈哈 Code::Blocks 有时在程序运行结束后,.exe 并没有结束,因而之后无论怎么调试和修改代码,运行 ...
- EditPlus 快捷键
FileFtpUpload Ctrl+Shift+S 上传文件到 FTP 服务器 FileNew Ctrl+N 新建普通的文本文档 Fi ...
- UITextField 对输入金额的约束
[2016/1/18更新] -- 五个人辛辛苦苦干了一年的项目终于上线了,今天有空看了一下正则表达式教程,然后开始rebuild之前的种种对字符串的约束,首先就从这个金额输入框开始吧,修改后的代码如下 ...
- winform程序中界面的跳转问题
首先是我们进行窗口间的跳转,尤其注意的是winform程序里面的空间都是中线程安全的.但是注意的是如果你在一个线程中操纵另外的控件,这时候会提示你一个错误,这个错误的解决方法准备单独的在另一篇文章中来 ...
- 转载C#泛型集合—Dictionary<K,V>使用技巧
1.要使用Dictionary集合,需要导入C#泛型命名空间 System.Collections.Generic(程序集:mscorlib) 2.描述 1).从一组键(Key)到一组值(Value) ...
- who am i
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...
- 关于boost::function与boost::bind函数的使用心得
最近开始写一个线程池,期间想用一个通用的函数模板来使得各个线程执行不同的任务,找到了Boost库中的function函数. Boost::function是一个函数包装器,也即一个函数模板,可以用来代 ...
- Lsp修复
打开电脑,进入命令提示符窗口,快捷键win+r. 在窗口中输入“cmd”进入命令符窗口. 在窗口中输入:输入netsh winsock reset,然后按下回车键. 然后稍等片刻, ...
- PM【terminal】
More Knowledge More Performance More Time 资料模组化 以知识管理为基础的项目管理 规范:ethic
- VS下面的编译错误-----转换到 COFF 期间失败: 文件无效或损坏
最近写了一个vs的小项目,然后编译的时候vs提示了"转换到 COFF 期间失败: 文件无效或损坏"的问题. 去网上搜索了一个解决方案.原作者的链接是:http://jingyan. ...