大数据零基础班第八课 - 大数据入门(一)

一、前置

二、hadoop入门介绍

三、hdfs部署环境

四、hdfs伪分布式部署

五、作业

一、前置(Important)

1、MySQL的sql语法,需要自己去看;在大数据开发中存储过程和函数几乎用不到;做Java开发的会用的到。

2、查询数据库中的视图和存储过程。

3、MySQL分组排序,Oracle分组排序,Spark分组排序,这些的真正含义是什么?

4、MySQL中的leftjoin、innerjoin

二、hadoop入门介绍

2.1、概念

1、广义:以apache hadoop软件为主的生态圈(Hive、Zookeeper、Hbase)

2、狭义:指的就是hadoop软件,如

  • http://www.apache.org/index.html#projects-list,在这个网址,可以看到很多apache的顶级项目.

2.2、hadoop软件版本

1.X 企业不用
2.X 主流版本
3.X 没有企业敢用,因为要踩坑

很多公司都是使用CDH5.X部署的大数据环境(www.cloudera.com)

  • eg:使用apache部署很麻烦,cloudera公司做了一套傻瓜式的简单部署,无论开发还是运维劳动力成本低;CDH5.X版本对应的是hadoop2.6.0版本,不等价于apache hadoop2.6.0.
  • cloudera公司的人没事就去升级打补丁。

2.3、Hadoop软件主要分为三个组成部分

1、hdfs:存储 分布式文件系统
2、mapreduce:计算,是由Java代码开发的,企业不用
3、yarn:资源(CPU memory)和作业调度

  • 思考一个问题:正常做开发,数据采集过来,进行计算,产生job1、job2,作业是由yarn来进行调度的。
  • 也有可能从hdfs抽取数据,计算完后,再回写到hdfs

mapreduce引申出来的框架由Hive、Spark,所以MapReduce的思想一定要知道。

小结:

  • 目前公司都是用Spark、Hive、Flink进行开发。

前置软件
1、hadoop-2.6.0-cdh5.7.0
2、jdk1.7.0_45
3、sshd
jdk安装注意点:解压后查看用户用户组。
https://blog.csdn.net/zhikanjiani/article/details/89378841

2.4、hadoop下载方式

1、http://archive.cloudera.com/cdh5/cdh/5/
CTRL+F:Hadoop-2.6.0-cdh5.7.0.tar.gz,搜索到后单击进行下载。

2、使用wget下载:
wget http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.7.0.tar.gz
在这里插入图片描述

三、hdfs部署环境

学习都是伪分布式部署:意思是只要1台机器就够了。

3.1、 Purpose:

1、This document describes how to set up and configure a single-node Hadoop installation so that you can quickly perform simple operations using Hadoop MapReduce and the Hadoop Distributed File System (HDFS).

3.2、 软件要求:

https://cwiki.apache.org/confluence/display/HADOOP2/HadoopJavaVersions

注意:有些jdk是会有问题的,在部署的时候可能没问题,在J总公司生产上,mysql-jdbc jar包的问题导致内存泄漏,在生产上严格按照要求来,根据推荐版本good的来。

ssh服务我们肯定是安装的,否则我们都无法使用SecureCRT软件来进行远程连接。

我们的主要生产系统使用的就是CentOS6.X和CentOS7.X

3.3、 开始部署:

第一步:增加hadoop用户:

  • useradd hadoop

第二步:创建目录mkdir app

第三步:rz上传或者wget下载

第四步:部署jdk

1、root用户下:cd /usr/java目录,rz命令上传,
tar -xzvf jdk-8u45-linux-x64.gz
解压完后注意使用ll查看用户和用户组:

2、配置全局或者个人环境变量,
全局环境变量:vi  /etc/profile  效果如下所示:

export JAVA_HOME=/usr/java/jdk1.7.0_45
#export JAVA_HOME=/usr/java/jdk1.8.0_45
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

2、完成后注意:source生效
source /etc/profile

3、扩展:新建/usr/shar/java目录
mkdir  /usr/share/java  
目的 :CDH环境下部署mysql jdbc jar 包

注意:以后凡是使用到解压都需要使用ll查看下用户及用户组。

扩充:

  • 我们解压后发现的jdk的用户是10,使用这个命令:cat /etc/passwd|grep 10
[root@hadoop java]# cat /etc/passwd|grep 10
games:x:12:100:games:/usr/games:/sbin/nologin
hadoop:x:1000:1000::/home/hadoop:/bin/bash

三、hdfs部署环境账户当前不可用的解决办法(This account is currently not available.)

1、只要把结尾的 /sbin/nologin改为/bin/bash即可。

2、想要让用户不能登录也这样操作即可:把/bin/bash改为/sbin/nologin即可。

扩展二:

CDH:

组件用户
hdfshdfs
yarnyarn
zookeeperzookeeper
hbasehbase

在生产上,su - zookeeper切不了,生产是如何做的?

  • 说穿了就是把/sbin/nologin改为/bin/bash即可。

四、hdfs伪分布式部署

1、增加hadoop用户:

  • useradd Hadoop
    统一使用Hadoop用户:mkdir app(存放软件) data software

2、解压hadoop软件:hadoop-2.6.0-cdh5.7.0.tar.gz

  • tar -xzvf hadoop-2.6.0-cdh5.7.0
    配置环境变量:
export HADOOP_HOME=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

3、解压后的hadoop软件目录解读:

[hadoop@hadoop hadoop-2.6.0-cdh5.7.0]$ ll
total 76
drwxr-xr-x  2 hadoop hadoop  4096 Mar 24  2016 bin			可执行脚本
drwxr-xr-x  2 hadoop hadoop  4096 Mar 24  2016 bin-mapreduce1
drwxr-xr-x  3 hadoop hadoop  4096 Mar 24  2016 cloudera
drwxr-xr-x  6 hadoop hadoop  4096 Mar 24  2016 etc			配置目录(conf)
drwxr-xr-x  5 hadoop hadoop  4096 Mar 24  2016 examples
drwxr-xr-x  3 hadoop hadoop  4096 Mar 24  2016 examples-mapreduce1
drwxr-xr-x  2 hadoop hadoop  4096 Mar 24  2016 include
drwxr-xr-x  3 hadoop hadoop  4096 Mar 24  2016 lib			jar包目录
drwxr-xr-x  2 hadoop hadoop  4096 Mar 24  2016 libexec
-rw-r--r--  1 hadoop hadoop 17087 Mar 24  2016 LICENSE.txt
-rw-r--r--  1 hadoop hadoop   101 Mar 24  2016 NOTICE.txt
-rw-r--r--  1 hadoop hadoop  1366 Mar 24  2016 README.txt
drwxr-xr-x  3 hadoop hadoop  4096 Mar 24  2016 sbin			hadoop组件的启动,停止脚本
drwxr-xr-x  4 hadoop hadoop  4096 Mar 24  2016 share
drwxr-xr-x 17 hadoop hadoop  4096 Mar 24  2016 src

4、在etc/hadoop/目录下进行逐一配置:

[hadoop@hadoop004 hadoop]$ pwd
/home/hadoop/app/hadoop/etc/hadoop
[hadoop@hadoop004 hadoop]$ ll
total 152
-rw-r--r--. 1 hadoop hadoop  4436 Mar 24  2016 capacity-scheduler.xml
-rw-r--r--. 1 hadoop hadoop  1335 Mar 24  2016 configuration.xsl
-rw-r--r--. 1 hadoop hadoop   318 Mar 24  2016 container-executor.cfg
-rw-r--r--. 1 hadoop hadoop   904 Apr 18 02:38 core-site.xml
-rw-r--r--. 1 hadoop hadoop  3670 Mar 24  2016 hadoop-env.cmd
-rw-r--r--. 1 hadoop hadoop  4333 Apr 18 03:04 hadoop-env.sh

1、 vi hadoop-env.sh 编辑如下:

The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.7.0_45
#export JAVA_HOME=/usr/java/jdk1.8.0_45
export HADOOP_PREFIX=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0

拥有三种模式仅作了解:

1、Standalone Operation
2、Pseudo-Distributed Operation
3、Fully-Distributed Operation

注意一句话关于Pseudo-Distributed Operation:

  • Hadoop can also be run on a single-node in a pseudo-distributed mode where each hadoop daemon runs in a separate Java process(每一个Hadoop进程都是可以以一个Java进程来运行的).

2、 vi core-site.xml

路径位置:/home/hadoop/app/hadoop/etc/hadoop/core-site.xml,编辑如下:

etc/hadoop/core-site.xml:
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>		//localhost可以写当前部署环境机器的IP,如果是阿里云主机配置内网IP
    </property>
</configuration>

3、 vi hdfs-site.xml

路径位置:/home/hadoop/app/hadoop/etc/hadoop/hdfs-site.xml,编辑如下:

etc/hadoop/hdfs-site.xml:
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

4.1、单台机器的无密码访问

1、当前使用hadoop用户,使用root用户会有问题,在hadoop用户下ssh localhost date会出现问题,Permission denied, please try again.
在这里插入图片描述
此处跟着若泽数据进行如下操作:

1、进入~目录:
[hadoop@hadoop004 hadoop]$ cd ~
[hadoop@hadoop004 ~]$ ll -a
total 52
drwx------. 2 hadoop hadoop 4096 Apr 18 02:42 .ssh

2、删除系统原有的.ssh文件
rm -rf .ssh

3、ssh-keygen 生成密钥文件,三个回车okay

4、进入到.ssh目录下,查看到有如下几个文件:id_rsa(私有密钥)、id_rsa.pub(公钥);
cat id_rsa.pub >> authorized_keys,把公钥文件追加到authorized_keys;

5、chmod -R 600 authorized_keys    赋予此文件600权限,在cdh官网上未做体现,但是在Apache官网上有写,网址如下:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html

6、此时进行测试:ssh localhost date
首次通信输入yes,测试无问题如下:
[hadoop@hadoop004 .ssh]$ ssh localhost date
Thu Apr 18 05:06:30 HKT 2019

注意:上述操作步骤使用的是hadoop用户,不是root用户。

4.2、准备启动Hadoop

1、启动前首先需要格式化namenode:

  • bin/hdfs namenode -format,出现successfully formatted则表示成功.
    在这里插入图片描述

2、命令start-dfs.sh来启动hadoop:

[hadoop@hadoop004 hadoop]$ start-dfs.sh
[hadoop@hadoop004 hadoop]$ jps
52531 SecondaryNameNode
52629 Jps
52411 DataNode
52319 NameNode


单节点启动NameNode
sbin/hadoop-daemon.sh start NameNode
单节点启动SecondaryNameNode和DataNode:
命令是一样的:
hadoop-daemon.sh start secondarynamenode
hadoop-daemon.sh start datanode

4.3、hadoop日志信息解读

启动日志信息如下:

[hadoop@hadoop hadoop-2.6.0-cdh5.7.0]$ start-dfs.sh
19/10/15 16:24:36 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [hadoop]
The authenticity of host 'hadoop (172.16.56.88)' can't be established.
ECDSA key fingerprint is 8e:8d:a4:95:50:cc:40:d6:e5:51:0f:84:a8:7b:ce:ef.
Are you sure you want to continue connecting (yes/no)? yes
hadoop: Warning: Permanently added 'hadoop,172.16.56.88' (ECDSA) to the list of known hosts.
hadoop: starting namenode, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/logs/hadoop-hadoop-namenode-hadoop.out
localhost: starting datanode, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/logs/hadoop-hadoop-datanode-hadoop.out
Starting secondary namenodes [0.0.0.0]
The authenticity of host '0.0.0.0 (0.0.0.0)' can't be established.
ECDSA key fingerprint is 8e:8d:a4:95:50:cc:40:d6:e5:51:0f:84:a8:7b:ce:ef.
Are you sure you want to continue connecting (yes/no)? yes
0.0.0.0: Warning: Permanently added '0.0.0.0' (ECDSA) to the list of known hosts.
0.0.0.0: starting secondarynamenode, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/logs/hadoop-hadoop-secondarynamenode-hadoop.out
19/10/15 16:25:03 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
[hadoop@hadoop hadoop-2.6.0-cdh5.7.0]$ jps
4182 SecondaryNameNode
4313 Jps
3933 NameNode
4028 DataNode

在这里插入图片描述

解释:

1、starting namenodes说明namenode可以启动多个,我们当前只部署了一个

2、localhost来启动datanode,localhost都已经配置了无密码信任关系

3、secondarynamenode在0.0.0.0这个机器上启动的,说白了其实还是在当前机器上启动的,只是信任关系配置的是localhost

4、为什么要配置ssh信任关系,启动secondarynamenode是在0.0.0.0上,第一次要输入yes,

secondarynamenode信任关系输入yes后,会在known_hosts中创建一条记录;
当我们输入ssh localhost date,首先会去authorized_keys这个文件中去找hadoop用户:hadoop机器已经配置了一个密钥,相当于用户暴露的一个公钥文件;authorized_keys可以放其它机器的文件。

ssh loclahost首先回去suthorized_keys中去找,找不到的话会让我们输入yes,因为known_hosts中没有这条记录,为什么不用输入密码?公钥文件放到了信任文件中(authorized_keys)

思考:为什么要配置ssh localhost,因为在启动的时候是需要ssh的。

出现的问题?

J总部署的时候:datanode进程没有起来,解决:cd /tmp目录下,rm -rf hadoop-hadoop,里面有datanode的地址;这时重新格式化namenode,bin/hdfs namenode -format,再次尝试重新启动,没有问题。

4.4、Web UI界面查看

  • 网址:http://47.98.238.163:50070/dfshealth.html#tab-overview
  • 在core-site中配置的是阿里云内网IP,浏览器访问的时候使用的是外网IP+50070端口。

在这里插入图片描述

NameNodeSecondaryNameNodeDataNode
名称节点第二名称节点数据节点
老大老二小弟

对于hdfs如何理解?

  • 正常的电脑是一个物理机,我们在物理机上装了一个linux系统,理解为做存储用,部署文件脚本;部署hdfs的意思是,在linux系统上又部署了一个hdfs,hdfs也是一个做存储的;linux系统是从根目录 / 开始的,hdfs也是从根目录 / 开始的。

在这里插入图片描述

  • 相当于我们在windows上划分了40G部署了一个VM虚拟机,在虚拟机上又划了一小块做hdfs,这是一个嵌套的东西。

关于hdfs的一些相关命令请参考楼主的其它博客:

  • https://blog.csdn.net/zhikanjiani/article/details/100039072

HDFS命令和linux命令极其相似:

  • hdfs命令能够出来是因为在~/.bash_profile中已经配置好了的原因,否则我们需要补全路径;不补全的话从环境变量中读取是读不到的。

五、作业

1、ssh博客、阅读、摘抄

2、部署hdfs伪分布式并写博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值