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下安装eclipse

搭建Hadoop2.6.0+Eclipse开发调试环境

转载于:https://www.cnblogs.com/xiuyangleiasp/p/5010311.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"[Error 2]no such file or directory" 是一个常见的错误提示,意思是指定的文件或目录不存在。 在引用中,错误提示是"[Errno 2] No such file or directory: ‘./test.txt’",这表示尝试打开名为 "test.txt" 的文件时发生了错误,因为该文件不存在或路径不正确。 同样,在引用中,错误提示是"FileNotFoundError: [Errno 2] No such file or directory: ‘./test.txt’",这也说明了尝试打开文件 "test.txt" 时遇到了同样的错误,即文件不存在或路径不正确。 最后,在引用中,错误提示是"Error: No such file or directory @ rb_sysopen - /Users/xx/Library/Caches/Homebrew/downloads/520630cf4036c55fb3574339afd8aba45c6f18a60f58369d0ca1dc4606c23269–harfbuzz-3.1.1.arm64_monterey.bottle.tar.gz",这说明尝试打开指定路径下的文件失败,因为该文件或目录不存在。 总结来说,"[Error 2]no such file or directory" 表示指定的文件或目录不存在,可能是因为文件名称、路径或文件夹名称错误,或者文件或目录确实不存在。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [[Errno 2] No such file or directory. 解决VSCode相对路径出错问题](https://blog.csdn.net/Humphreyr/article/details/121134443)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [一种解决方法 Error: No such file or directory @ rb_sysopen](https://blog.csdn.net/Smilelfq/article/details/129580331)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值