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

一、安装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

Hadoop安装&单机/伪分布式配置_Hadoop2.7.2/Ubuntu14.04_第1张图片

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

Hadoop安装&单机/伪分布式配置_Hadoop2.7.2/Ubuntu14.04_第2张图片

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

Hadoop安装&单机/伪分布式配置_Hadoop2.7.2/Ubuntu14.04_第3张图片

七、伪分布模式配置

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

修改为以下配置:

       
             hadoop.tmp.dir
             file:/usr/local/hadoop/tmp
             Abase for other temporary directories.
       

       
             fs.defaultFS
             hdfs://localhost:9000
       


修改hdfs-site.xml:

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

修改为以下配置:


       
             dfs.replication
             1
       

       
             dfs.namenode.name.dir
             file:/usr/local/hadoop/tmp/dfs/name
       

       
             dfs.datanode.data.dir
             file:/usr/local/hadoop/tmp/dfs/data
       


2.执行NameNode 的格式化

./bin/hdfs namenode -format

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

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

Hadoop安装&单机/伪分布式配置_Hadoop2.7.2/Ubuntu14.04_第4张图片

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

修改后如下图:

Hadoop安装&单机/伪分布式配置_Hadoop2.7.2/Ubuntu14.04_第5张图片

$ source etc/hadoop/hadoop-env.sh

再次启动所有服务就好了

$ start-all.sh

Hadoop安装&单机/伪分布式配置_Hadoop2.7.2/Ubuntu14.04_第6张图片

启动时可能会出现如下 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”

Hadoop安装&单机/伪分布式配置_Hadoop2.7.2/Ubuntu14.04_第7张图片

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_第8张图片

你可能感兴趣的:(Hadoop/Spark)