Ubuntu Kylin16.04 安装Hadoop2.7.4 伪分布式

最近,因为课程设计需要在Ubuntu上安装Hadoop。本人使用的是Ubuntu kylin 16.04,安装Hadoop2.7.4。安装过程都是参考别人的博客,自己一步一步摸索过来的。如果您在安装的过程中遇到了什么问题,请多自己查阅网上资料,毕竟每个人会遇到的问题可能是不一样的。

一、安装JDK

Hadoop 2.7及更新版本需要JAVA 7支持,本人安装的是Oracle jdk1.8_151为例。

$ tar -zxvf jdk-8u77-linux-x64.tar.gz
  • 将解压后的 jdk1.8.0_151放到/usr/local/jdk目录
    进入/usr/local目录并创建/usr/local/jdk文件夹:
$ cd /usr/local
$ sudo mkdir /usr/local

将解压后的 jdk1.8.0_151放到/usr/local/jdk目录:

$ cp -rf  jdk1.8.0_151 /usr/local/jdk
  • 配置jdk环境变量
    本人配置环境变量一般喜欢更改/etc/profile和~/.bashrc两个文件:
    更改/etc/profile,使用如下命令:
$ sudo gedit /etc/profile

在弹出来的记事本文档末尾添加以下内容:

export JAVA_HOME=/usr/local/jdk/jdk1.8.0_151
export JRE_HOME=${JAVA_HOME}/jre    
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib    
export PATH=${JAVA_HOME}/bin:$PATH 

使/etc/profile中的jdk环境变量生效:

$ source /etc/profile

对~/.bashrc的操作,如同/etc/profile:

$ sudo gedit ~/.bashrc
$ source ~/.bashrc
  • 测试jdk是否安装成功
    使用如下命令,检查jdk是否安装成功:
$ java -version

如果安装成功,会出现jdk的版本信息,如下图:
这里写图片描述

二、新建hadoop用户,配置ssh

① 安装ssh

使用以下命令安装ssh:

$ sudo apt-get install ssh
$ sudo apt-get install rsync

② 创建hadoop用户

  • 使用以下命令,新建hadoop用户
$ adduser hadoop

需要为hadoop用户设置密码,建议输入一个自己方便记忆的密码。
注意:需要为hadoop 用户添加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题!

扫描二维码关注公众号,回复: 1590602 查看本文章
$ sudo adduser hadoop sudo
  • 配置SSH
    切换到hadoop用户,生成ssh密钥:
$ su - hadoop
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
  • 测试ssh
    以hadoop用户连接localhost,是否能够登录上本机:
$ ssh localhost

会有如下提示(SSH首次登陆提示),输入 yes 。然后按提示输入密码 hadoop,这样就登陆到本机了。
这里写图片描述
退出登录使用如下命令:

$ exit

注意:后续操作全部在hadoop用户下

三、伪分布式安装Hadoop2.7.4

① 下载和初始化Hadoop2.7.4

$ tar zxvf hadoop-2.7.4.tar.gz
$ sudo mv hadoop-2.7.4 /usr/local/hadoop
  • 初始化Hadoop

查看jdk安装路径:

$ realpath /usr/bin/java

得到以下内容:

/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

记录下jdk安装路径:

/usr/lib/jvm/java-8-openjdk-amd64

  • 为hadoop-env.sh设置jdk环境变量

编辑hadoop-env.sh:

$ cd /usr/local/hadoop
$ nano etc/hadoop/hadoop-env.sh

修改

export JAVA_HOME=${JAVA_HOME}

为:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

  • 测试Hadoop是否初始化成功
$ bin/hadoop

会得到hadoop命令的使用说明,如下图所示,则上述安装正确。
这里写图片描述

② 配置DFS(伪分布模式安装第一个配置)

Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。

Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。
- 修改配置文件etc/hadoop/core-site.xml
编辑etc/hadoop/core-site.xml:

$ nano 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>
  • 修改配置文件etc/hadoop/hdfs-site.xml
    编辑etc/hadoop/hdfs-site.xml:
$ nano 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>
  • 格式化HDFS
$ bin/hdfs namenode -format
  • 启动NameNode和DataNode,测试DFS配置是否成功
$ sbin/start-dfs.sh

在浏览器中访问http://localhost:50070/,可以看到NameNode相关信息。也可以通过jps命令查看:

$ jps

查看结果如下图所示:
这里写图片描述
要关闭 Hadoop,则运行:

$ sbin/stop-dfs.sh
  • 运行示例程序grep
    单机模式中,grep 例子读取的是本地数据,伪分布式读取的则是 HDFS 上的数据。要使用 HDFS,首先需要在 HDFS 中创建用户目录:
$ bin/hdfs dfs -mkdir /user
$ bin/hdfs dfs -mkdir /user/hadoop
$ bin/hdfs dfs -mkdir input

接着将 ./etc/hadoop 中的 xml 文件作为输入文件复制到分布式文件系统中,即将 /usr/local/hadoop/etc/hadoop 复制到分布式文件系统中的 /user/hadoop/input 中。使用的是 hadoop 用户,并且已创建相应的用户目录 /user/hadoop ,因此在命令中就可以使用相对路径如 input,其对应的绝对路径就是 /user/hadoop/input:

$ bin/hdfs dfs -put ./etc/hadoop/*.xml input

复制完成后,可以通过如下命令查看文件列表:

$ bin/hdfs dfs -ls input

文件列表如图所示:
这里写图片描述
运行grep:

$ bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.4.jar grep input output 'dfs[a-z.]+'

查看运行结果的命令(查看的是位于 HDFS 中的输出结果):

$ bin/hdfs dfs -cat output/*

运行结果如下:
这里写图片描述
如果程序运行正常,且输出正确,则以上配置成功。

③ YARN配置(伪分布模式安装第二个配置)

  • 修改配置文件 mapred-site.xml
    对etc/hadoop/mapred-site.xml.template进行重命名:
$ mv etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml

修改etc/hadoop/mapred-site.xml,可以使用gedit进行编辑:

$ gedit etc/hadoop/mapred-site.xml

配置为:

<configuration>
    <property>
         <name>mapreduce.framework.name</name>
         <value>yarn</value>
    </property>
</configuration>
  • 修改配置文件 yarn-site.xml
    使用gedit进行编辑:
$ gedit etc/hadoop/yarn-site.xml

配置为:

<configuration>
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>1024</value>
    </property>
    <property>
        <name>yarn.nodemanager.resource.cpu-vcores</name>
        <value>1</value>
    </property>
</configuration>
  • 启动YARN
$ sbin/start-yarn.sh      # 启动YARN
$ sbin/mr-jobhistory-daemon.sh start historyserver  # 开启历史服务器,才能在Web中查看任务运行情况

开启后通过 jps 查看,可以看到多了 NodeManager 和 ResourceManager 两个后台进程,如下图所示。
这里写图片描述
启动 YARN 之后,运行实例的方法还是一样的,仅仅是资源管理方式、任务调度不同。观察日志信息可以发现,不启用 YARN 时,是 “mapred.LocalJobRunner” 在跑任务,启用 YARN 之后,是 “mapred.YARNRunner” 在跑任务。启动 YARN 有个好处是可以通过 Web 界面查看任务的运行情况:http://localhost:8088/cluster,如下图所示。
这里写图片描述
关闭 YARN 的脚本如下:

$ sbin/stop-yarn.sh
$ sbin/mr-jobhistory-daemon.sh stop historyserver

④ 为Hadoop配置环境变量

同为jdk配置环境变量一样,本人会同时更改/etc/peofile和~/.bashrc两个文件:
更改/etc/profile,使用如下命令:

$ sudo gedit /etc/profile

在弹出来的记事本文档末尾添加以下内容:

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export  HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export  HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

使/etc/profile中的jdk环境变量生效:

$ source /etc/profile

生效后,在任意目录中,都可以直接使用 hdfs 等命令了,执行以下命令查看 HDFS:

$ hdfs dfs -ls input

hdfs dfs -ls input

~/.bashrc的操作,如同/etc/profile:

$ sudo gedit ~/.bashrc
$ source ~/.bashrc

猜你喜欢

转载自blog.csdn.net/u014454538/article/details/78510043