ubuntu下部署hadoop3.1.3伪分布系统

打印 上一主题 下一主题

主题 876|帖子 876|积分 2628

前段时间开始学习大数据的一些知识,在查阅hadoop的资料时,因网上的数据比较乱,所以对相干资料整理汇总了一下,形成笔记,以方便以后查阅,也可供有爱好的朋友共同砚习参考。
学习过程重要参考了厦门大学林子雨老师的相干资料,特别感谢。
林子雨老师的博客(https://dblab.xmu.edu.cn/blog/author/ziyulin/)
学习过程中须要在ubuntu下运行,如须要虚拟机下安装、配置、运行ubuntu系统,可参考《Oracle VM VirtualBox 虚拟机安装Ubuntu并实现主机与虚拟机的数据共享》一文。地址:https://blog.csdn.net/hnkkfan/article/details/142138235。
【什么是hadoop】

Hadoop是apache开发的,分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架。其核心部件是HDFS与MapReduce。HDFS是一个分布式文件系统,MapReduce是一个分布式计算框架。说通俗点,HDFS像是一个可以动态扩展的用来存储大规模数据的大硬盘,MapReduce像是一个计算引擎,通过规则编写程序,用于完成指定的计算使命。
【所需软件】
1、jdk-8u191-linux-x64.tar.gz
2、Hadoop 3.13
以上两个资源以及后面要用到的hbase,可从我的迅雷网盘中下载:
链接:https://pan.xunlei.com/s/VO5ao8SwNl67SPRnqjpFZk33A1#
提取码:rnfk
【预备工作】

(一)创建hadoop用户
创作如在ubuntu安装时,用户名就是hadoop,就无需本步操纵。
否则就要新建一个。
首先按 ctrl+alt+t 打开终端窗口,输入如下下令创建新用户 ,并设置其密码:
  1. sudo useradd -m hadoop -s /bin/bash
复制代码
这条下令创建了可以登岸的 hadoop 用户,并使用 /bin/bash 作为 shell。
(二)安装hadoop前,须要安装并配置ssh和JDK。
1 、安装ssh并配置ssh无密码访问
SSH是一种安全的远程访问毗连方式,利用ssh工具,可以远程访问linux电脑并举行操纵。Hadoop无论是单机运行照旧集群运行,都须要用到ssh工具。Ssh工具须要客户端和服务器端。默认情况下,ubuntu安装完成后已经包罗了客户端,所以我们只须要下载安装服务器端就行了。
打开ubuntu的终端(快键键为CTRL+ALT+T,这个在后面的操纵常常用到,最好记得这个快捷键),输入:
sudo apt-get install openssh-server 后回车,按系统要求输入密码,会开始安装open ssh server。

安装过程中,系统会提示须要的空间,并确认我们是否继续,按Y,然后回车继续。
直到如下界面,安装完成。

在终端中输入 ssh localhost 即开始运行ssh服务。
第一次运行会有如下提示,输入yes按回车

然后输入密码,出现以下界面,分析ssh服务器已经在运行了。

这时我们的ssh是须要密码的,我们须要用 ssh-keygen 生成密钥,并将密钥加入到授权中,完成后以后再次登录,就不须要输入密码了。
输入exit 先退出目前正在登录的ssh
进入主目次的.ssh文件夹,cd ~/.ssh/
【分析】~指的是当前用户的主目次,.ssh文件夹前面有”.”,分析这是一个隐蔽,用ls看不到这个文件夹,用ls -a可以看到。
执行 ssh-keygen -t rsa,重新生成密钥,然后输入三个回车
末了输入cat ./id_rsa.pub >> ./authorized_keys ,将公钥内容追加到授权文件中。

这时我们再运行ssh localhost 就不须要输入密码了。

2 、安装并配置JDK
打开终端中,在/usr/lib/新建文件夹jvm,然后把下载中的jdk文件解压到/usr/lib/jvm下

然后我们到/usr/lib/jvm下,看看解压工作是否正常完成。如看到一个名字为jdk1.8.0_191
的文件夹,分析解压正常,复制下这个文件夹名称,后面要用。

回到主目次,用gedit把主目次下的.bashrc文件编辑一下

对这个下令分析一下:
1…bashrc是linux系统中用于存储用户个性化设置的一个脚本文件,用户可以根据自己的需求定制工作情况,例如设置情况变量、定义别名、配置下令提示符等。
2.因为这个文件的特别性,所以对它编辑时要用sudo 即系统管理身份才能编辑。
3.gedit是一个文本文件编辑器,雷同于windows下的记事本。
所以这句下令的意思就是用以系统管理的身份,用gedit来编辑~/.bashrc这个文件。‌‌
打开gedit后,把以下内容添加到文件开头。然后生存退出gedit
(如在终端中出现不支持设置属性 metadata::gedit-position的警示,不用管他)
  1. export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_191
  2. export JRE_HOME=${JAVA_HOME}/jre
  3. export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
  4. export PATH=${JAVA_HOME}/bin:$PATH
复制代码

执行source ~/.bashrc下令,让编辑好的.bashrc文件立即生效。
执行java version下令,检查一下配置脚本是否生效。如出现以下结果,则分析生效正常。

【安装hadoop并配置hadoop非分布式运行】

由于我在后面要学习安装hbase2.2.2,而hbase2.2.2要求hadoop版本必须在3.1.3之上,所上我们在这里也安装hadoop3.1.3。
同样,把下载文件夹中的hadoop解压到指定文件夹(/usr/local/),
然后把文件夹名从hadoop-3.1.3改为hadoop
末了把这个文件夹中全部文件的所才者改为hadoop

执行 /usr/local/hadoop/bin/下的hadoop version 下令,如出现hadoop 3.1.3等内容,分析hadoop安装成功。

这样hadoop 的单机运行情况就配好了,下面举行hadopp伪分布配置。
【 hadopp伪分布配置】

Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 历程以分离的 Java 历程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。
Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式须要修改2个配置文件 core-site.xml 和 hdfs-site.xml。两个文件都在/usr/local/hadoop/etc/hadoop下面。
使用下令sudo gedit ./etc/hadoop/core-site.xml,将当中的修改为:
  1. <configuration>
  2.     <property>
  3.         <name>hadoop.tmp.dir</name>
  4.         <value>file:/usr/local/hadoop/tmp</value>
  5.         <description>Abase for other temporary directories.</description>
  6.     </property>
  7.     <property>
  8.         <name>fs.defaultFS</name>
  9.         <value>hdfs://localhost:9000</value>
  10.     </property>
  11. </configuration>
复制代码

生存退出
同样修改hdfs-site.xml
下令:sudo gedit ./etc/hadoop/hdfs-site.xml
把当中的修改为:
  1. <configuration>
  2.     <property>
  3.         <name>dfs.replication</name>
  4.         <value>1</value>
  5.     </property>
  6.     <property>
  7.         <name>dfs.namenode.name.dir</name>
  8.         <value>file:/usr/local/hadoop/tmp/dfs/name</value>
  9.     </property>
  10.     <property>
  11.         <name>dfs.datanode.data.dir</name>
  12.         <value>file:/usr/local/hadoop/tmp/dfs/data</value>
  13.     </property>
  14. </configuration>
复制代码

然后生存退出。
配置完成后,执行 NameNode 的格式化:
  1. cd /usr/local/hadoop
  2. ./bin/hdfs namenode -format
复制代码
成功的话,会看到 “successfully formatted” 的提示,详细返复书息雷同如下:

接着开启 NameNode 和 DataNode 守卫历程。
  1. cd /usr/local/hadoop
  2. ./sbin/start-dfs.sh
复制代码
然后运行jps来判断是否成功启动,如果成功启动则会列出如下历程: “NameNode”、“DataNode” 和 “SecondaryNameNode”,如下图所示:

别的,若是 DataNode 没有启动,可实行如下的方法(注意这会删除 HDFS 中原有的全部数据,如果原有的数据很紧张请不要这样做):
  1. cd /usr/local/hadoop
  2. ./sbin/stop-dfs.sh
  3.    # 关闭dfs
  4. rm -r ./tmp     # 删除 tmp 文件,注意这会删除 HDFS 中原有的所有数据
  5. ./bin/hdfs namenode -format
  6.    # 重新格式化 NameNode
  7. ./sbin/start-dfs.sh
  8. # 重启dfs
复制代码
成功启动后,我们可以访问 Web 界面 http://localhost:9870 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。

OK,hadoop的伪分布系统为完成了,下面我们用一个例子来实行一下我们的结果。
【举个栗子】

比如,有7个文件放在~/mylogs/路径下面,内容是9月1日至9月7日每个用户登录公司OA系统的时间。
如下:


如我们希望分析下一这一周admin这个用户一共登录了几次,可以使用hadoop的mapreduce中的grep例子举行分析统计
由于grep 例子读取的是当地数据,伪分布式读取的则是 HDFS 上的数据。要使用 HDFS,首先须要在 HDFS 中创建用户目次:下令如下:
  1. ./bin/hdfs dfs -mkdir -p /user/hadoop
复制代码
然后在hadoop的dfs分布文件系统下下新建一个input文件夹,并把上面的日志文件复制到这个文件夹中。
  1. ./bin/hdfs dfs -mkdir input
  2. ./bin/hdfs dfs -put ~/mylogs/*.* input
复制代码
使用ls 看下目次,可以看到这些文件
./bin/hdfs dfs -ls input

使用下令:
  1. ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output 'adm[a-z.]+'
复制代码
【表明】grep mapreduce下的一个文本搜刮工具,它能使用特定模式匹配(包罗正则表达式)搜刮文本,并默认输出匹配行。这行下令的大概意思就是把input文件下全部文件举行搜刮,把以adm开头的单词统计次数,并返回到output文件夹中。
完成后,可以使用以下下令查看结果:
  1. ./bin/hdfs dfs -cat output/*
复制代码
可以看到admin这个用户在这一周内登录了70次。

上例中只是一个例子,mapreduce尚有很多功能,有爱好的朋友可以从相干资料中详细看下。
【小结一下】

hadoop配置完成后,以后我们的ubuntu再开机重启后,只须要在终端运行:
进入hadoop所在的路径:cd /usr/local/hadoop/
开始dfs:
  1. ./sbin/start-dfs.sh
复制代码
如需关闭dfs,则须要运行:
  1. ./sbin/stop-dfs.sh
复制代码
如需重新格式化namenode的下令,运行:
  1. ./bin/hdfs namenode -format
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立聪堂德州十三局店

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表