您的位置:首页 > 运维架构

Ubuntu安装与调试hadoop3.0

2018-02-12 00:53 585 查看
安装调试了两个晚上,终于在虚拟机上把hadoop的环境搭建好了,中间遇到一些问题这里一并记录一下。

1. 文档

安装hadoop的首要任务当然是打开官网看文档中的安装指南。中文的资料也有,但是还是会因为版本和系统问题遇到一些坑,这里统一使用官网的推荐的各版本搭配使用,效果更佳。

官网文档地址 >>> Go!

2. 系统和软件依赖

2.1 环境和依赖如下:

系统:ubuntu 16.04
依赖:ssh、pdsh、jdk-8、hadoop-3.0.0


2.2 下载/安装/配置

别说了,升级一下你的apt后,开始大量下载和安装。

// 添加java远程镜像地址
$ sudo add-apt-repository ppa:webupd8team/java
// 升级安装工具
$ sudo apt-get update
$ sudo apt-get upgrade
// 安装ssh和pdsh
$ sudo apt-get install ssh
$ sudo apt-get install pdsh
// 安装java,安装器会提示你同意 oracle 的服务条款,选择 ok
$ sudo apt-get install oracle-java8-installer


配置java

$ sudo update-java-alternatives -s java-8-oracle
# 测试java是否安装成功
$ java -version


# java环境变量配置,进入profile文件,添加以下环境变量到文件末尾,然后激活
$ vi /etc/profile
$ source profile


下面的内容添加的
profile


# set oracle jdk environment
export JAVA_HOME=/usr/lib/jvm/java-8-oracle  # 这里目录要换成自己的jvm里面java的目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH


下载hadoop

hadoop镜像地址

点击链接(或者wget)下载指定版本:hadoop-3.0.0

$ wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-3.0.0/hadoop-3.0.0.tar.gz[/code] 
解压tar文件

$ tar -zxvf hadoop-3.0.0.tar.gz


修改hadoop配置文件

$ cd hadoop-3.0.0.tar.gz/
$ vi etc/hadoop/hadoop-env.sh
# 添加JAVA_HOME环境变量到最后一行
export JAVA_HOME=/usr/lib/jvm/java-8-oracle


3. 测试hadoop

此时我们所在的一直是
hadoop-3.0.0.tar.gz/
目录

运行hadoop脚本,会显示可用的命令行命令

$ bin/hadoop


现在环境基本上配置齐全了!

3.1 单机器单进程操作

此操作用于调试,不适用分布式文件系统和调度系统操作数据。

$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar grep input output 'dfs[a-z.]+'
$ cat output/*


3.2 伪分布式本地执行MapReduce任务

仅仅在本地运行MapReduce任务。

首先在以下文件的中添加配置内容。

$ vi etc/hadoop/core-site.xml


<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>


$ vi etc/hadoop/hdfs-site.xml


<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>


尝试是否可以免密码登陆自己的主机:

$ ssh localhost


如果不行,就做如下操作

# 如果已经有了rsa_id就不需要指向下面这一句
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys


免密配置和hadoop配置文件都设置好了,现在开始指向。

# 格式化文件系统
$ bin/hdfs namenode -format
# 开启`命名空间节点NameNode(主节点)`和`数据节点DataNode`的守护进程
$ sbin/start-dfs.sh


产生的log文件见logs文件夹。

此时可以访问NameNode节点web管理页面:
NameNode - http://localhost:9870/[/code] 
创建执行MapReduce任务所需的HDFS目录:

# 此时`/user`目录是分布式文件系统的根目录。
$ bin/hdfs dfs -mkdir /user
$ bin/hdfs dfs -mkdir /user/userMe


将测试用的文件复制到分布式文件系统(HDSF)中:

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


以本地运行的方式执行一次最简单的mapreduce任务,接下来也会讲在单节点YARN分布式调度系统上运行,这里主要是需要注意两者的区别,就是现在没有使用分布式调度功能!

小黑板:YARN集群-负责海量数据运算时的资源调度,集群中的角色主要有 ResourceManager /NodeManager。如果数据量少在本地环境就可以跑,如果数据量多就需要在YARN调度集群上实现分布式的大数据处理。

运行hadoop提供的mapreduce任务测试用例,并获得输出日志:

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


查看输出日志:

$ bin/hdfs dfs -cat output/*


现在一次最简单的hadoop任务已经执行完毕了!我们可以关闭文件系统进程。

$ sbin/stop-dfs.sh


3.2 伪分布式在单节点YARN上执行MapReduce任务

我们先执行命令开启HDFS守护进程:

$ sbin/start-dfs.sh


小黑板:HDFS集群:负责海量数据的存储,集群中的角色主要有 NameNode / DataNode/SecondaryNameNode。

这里提到一个问题:注意

在启动进程时会报一个没有权限访问系统(start-dfs.sh提示rcmd: socket: Permission denied)的错误,在网上找到了解决方案,链接:start-dfs.sh -> rcmd: socket: Permission denied

然后需要修改一些跟YARN有关的配置文件

$ vi etc/hadoop/mapred-site.xml


<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>


vi etc/hadoop/yarn-site.xml


<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration><
b3ac
/code>


开启ResourceManager[/code]和
NodeManager
守护进程:

$ sbin/start-yarn.sh


此时可以访问
ResourceManager
的web管理页面:
http://localhost:8088/


然后运行一个MapReduce任务,上一节写的一样。

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


关闭yarn守护进程

$ sbin/stop-yarn.sh


这样,我们通过上面的步骤实现了单机的伪分布式文件系统的搭建,和在本地运行MapReduce任务与通过单节点的YARN调度来跑MapReduce任务。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop