码迷,mamicode.com
首页 > 系统相关 > 详细

Hadoop安装&单机/伪分布式配置_Hadoop2.7.2/Ubuntu14.04

时间:2016-05-06 16:00:27      阅读:446      评论:0      收藏:0      [点我收藏+]

标签:

一、安装Java

1.下载jdk-8u91-linux-x64.tar.gz文件,网址为:http://www.oracle.com/technetwork/java/javase/downloads/index.html

2.安装:

#选择一个安装路径,我选择的是/opt,并将下载的jdk-8u91-linux-x64.tar.gz文件复制到这个文件夹下

$ cd /opt

$ sudo cp ~/Downloads/jdk-8u91-linux-x64.tar.gz -i /opt/

#解压、安装

$ sudo tar zxvf jdk-8u91-linux-x64.tar.gz

$ sudo rm -r jdk-8u91-linux-x64.tar.gz
#检查是否安装成功

技术分享

二、创建hadoop组和hadoop用户

1.添加hadoop用户到系统用户
$ sudo addgroup hadoop
$ sudo adduser --ingroup hadoop hduser
2.给hadoop用户赋予rs

在root ALL=(ALL:ALL) ALL下面加上hduser  ALL=(ALL:ALL) ALL

如下图:

技术分享

三、配置SSH

以使各机器之间执行指令无需输入登录密码,否则,主节点每次试图访问其他节点时,都需要手动输入这个密码。

1.安装ssh
$ sudo apt-get install openssh-server

2.启动服务

$ sudo /etc/init.d/ssh start

3.启动后,可以通过如下命令查看服务是否正确启动

$ ps -e |grep ssh

技术分享

4.生成公钥和私钥:

$ ssh-keygen -y -t rsa -P ""

这时会在/home/hduser/.ssh下生成两个文件:id_rsa和id_rsa.pub,前者为私钥,后者为公钥.

5.现在我们将公钥追加到authorized_keys中
$ cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys

6.登入ssh,确认以后登录时不用输入密码

ssh localhost

技术分享

7.登出
exit

再次登入的话就不需要密码了

四、安装hadoop

1.首先到https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/stable/下载hadoop-2.7.2.tar.gz

2.解压并放在你希望的目录中。我放到了/usr/local/hadoop

$ sudo tar xzf hadoop-2.7.2.tar.gz
$ sudo mv hadoop-2.7.2 /usr/local/hadoop

3.要确保所有的操作都是在用户hdsuer下完成的:
$ sudo chown -R hduser:hadoop /usr/local/hadoop

五、配置~/.bashrc

1.切换到hadoop用户,我的是hduser

$ su - hduser

2..查看java安装路径
update-alternatives - -config java

技术分享

完整的路径为: /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
我们只取前面的部分 /usr/lib/jvm/java-7-openjdk-amd64

3.修改配置文件bashrc

$ sudo gedit ~/.bashrc

#在文件末尾追加下面内容


#HADOOP VARIABLES START
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HADOOP_INSTALL=/usr/local/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
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
#HADOOP VARIABLES END

4.修改/usr/local/hadoop/etc/hadoop/hadoop-env.sh

$ sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh

找到JAVA_HOME变量,修改此变量如下
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
至此,单机模式配置完毕,下面进行wordcount测试

六、wordcount测试

1.首先在hadoop目录下新建文件夹input

$ cd /usr/local/hadoop/
$ mkdir input

2.将README.txt文件拷贝到input文件夹下,以统计文件中单词的频数
$ sudo cp README.txt input

3.运行wordcount程序,并将输出结果保存在output文件夹下

#每次重新执行wordcount程序的时候,都需要先把output文件夹删除!否则会出错

$ bin/hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.2-sources.jar org.apache.hadoop.examples.WordCount input output

技术分享

4.查看字符统计结果
$ cat output/*

技术分享

七、伪分布模式配置

1.修改2个配置文件 core-site.xml 和 hdfs-site.xml,配置文件位于 /usr/local/hadoop/etc/hadoop/ 中

首先在hadoop目录下创建几个文件夹:

$ cd /usr/local/hadoop
$ mkdir tmp
$ mkdir tmp/dfs
$ mkdir tmp/dfs/data
$ mkdir tmp/dfs/name

修改 core-site.xml:

$ sudo gedit etc/hadoop/core-site.xml

修改为以下配置:
<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:

$ sudo gedit 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/tmp/dfs/name</value>
        </property>
        <property>
             <name>dfs.datanode.data.dir</name>
             <value>file:/usr/local/hadoop/tmp/dfs/data</value>
        </property>
</configuration>

2.执行NameNode 的格式化

./bin/hdfs namenode -format

注意!只有刚创建hadoop集群的时候才需要格式化,不能对一个运行中的hadoop文件系统(HDFS)格式化,否则会丢失数据!!

成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若为 “Exitting with status 1” 则是出错。

技术分享

3.启动hadoop

执行start-all.sh来启动所有服务,包括namenode,datanode.

$ start-all.sh

在这里,如果出现了 Error: Cannot find configuration directory: /etc/hadoop,则通过下面方法解决

在hadoop-env.sh 配置一条hadoop配置文件所在目录

$ sudo gedit etc/hadoop/hadoop-env.sh

加上export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop

修改后如下图:

技术分享

$ source etc/hadoop/hadoop-env.sh

再次启动所有服务就好了

$ start-all.sh

技术分享

启动时可能会出现如下 WARN 提示:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable。该 WARN 提示可以忽略,并不会影响正常使用

4.通过jps命令判断是否成功启动:

技术分享

出现这种情况后,在计算机中搜索jps,由于我的java安装路径是:/opt/jdk1.8.0_91,所以jps位于:/opt/jdk1.8.0_91/bin

$ cd /opt/jdk1.8.0_91/bin

$ ./jps

若成功启动则会列出如下进程: “NameNode”、”DataNode” 和 “SecondaryNameNode”

技术分享

5.通过web界面查看hdfs信息

转到http://localhost:50070/即可查看

如果不能加载出http://localhost:50070/,则可能通过下面的方法解决:

执行NameNode 的格式化

$ ./bin/hdfs namenode -format

出现提示输入Y/N时一定要输入大写Y!!!

出现提示输入Y/N时一定要输入大写Y!!!

出现提示输入Y/N时一定要输入大写Y!!!

执行start-all.sh来启动所有服务

$ start-all.sh

然后执行jps命令

$ cd /opt/jdk1.8.0_91/bin

$ ./jps

再次转到网址http://localhost:50070/,就可以正常加载了。

6.停止运行hadoop

$ stop-all.sh

出现了no datanode to stop的提示:

技术分享

解决方法:

在stop-all.sh之后,删除/tmp/dfs/data以及/tmp/dfs/name下的所有内容,如下图所示,均包含一个current文件夹:

因此只需删除current文件夹

技术分享

技术分享

删除之后,再次格式化namenode、启动所有服务start-all.sh、并停止stop-all.sh,就可以正常stop datanode了。

技术分享

Hadoop安装&单机/伪分布式配置_Hadoop2.7.2/Ubuntu14.04

标签:

原文地址:http://blog.csdn.net/panglinzhuo/article/details/51317719

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!