实操_大数据学习_v0.0.3.持续更新。。。


文件名称版本号作者qq备注
实操_大数据学习_v0.0.3_持续更新。。。v0.0.2飞豺8416837Hadoop2.7.7 | Ubuntu18

概念

  • 分布式文件系统
    当数据容量超过所存储在单个物理机上的存储,多个物理机共同完成该数据存储,管理这些跨机器的存储操作就被称为分布式文件系统。
    文件系统管理的资源不一定直接相连本地,而是通过网络节点连接;基于C/S模式,由于对等特性,客户机也可以发布目录作为服务器供其它客户机访问,就像访问本地驱动器一样。
  • Hadoop
    将文件存储于普通计算机组成的集群,这样可以使用廉价计算机构建大规模数据集存储系统。它是分布式存储的基础设施。
  • DataNode与服务器节点
    在数目上,副本与DataNode一对一。
  • Spark
    基于分布式存储进行数据处理,不会存储。理论上,Hadoop可以抛开Spark,使用MapReduce进行数据处理。但一般来说,Spark速度快过MapReduce,它的处理方式是分步的:从集群取出数据处理后,放回集群,再取出更新后的数据,进行处理。
  • HBase-大表
  • 列族
    Apache HBase 中的列被分组为列族。列族的所有列成员具有相同的前缀。例如,courses:historycourses:math 都是 courses 列族的成员。冒号字符(:)从列族限定符中分隔列族。列族前缀必须由可打印字符组成。限定尾部,列族限定符可以由任意字节组成。必须在 schema 定义时提前声明列族,而列不需要在 schema 时定义,但可以在表启动并运行时动态地变为列。
    在物理上,所有列族成员一起存储在文件系统上。由于调音(tunings)和存储(storage)规范是在列族级完成的,因此建议所有列族成员具有相同的一般访问模式和大小特征.

HDFS实操

Ubuntu OS环境下的操作 - 其他Linux类似

新建用户组
  • 新增Hadoop用户组和用户 - 也可以直接用管理员
sudo addgroup hadoop_;
sudo adduser --ingroup hadoop_ hduser_ # ↓图

out:

Creating home directory `/home/hduser_' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 

在这里插入图片描述
输入:888888
FullName:cyl
RoomNumber:9527
WorkPhone 等

安装SSH服务
开启ssh

执行命令:ssh localhost | 127.0.0.1进行登录测试,若报错,先安装SSH相关,方能便捷使用功能

sudo apt-get install ssh
sudo apt-get install rsync
免密登陆设置 见RSA登录
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 可能以上命令没起效 , 仍然需要输入PW
# Ubuntu系统下,免密若不起效,并不影响后续操作

*
实现效果:执行登录指令可以免密登录成功。
切换到peer身份的用户不需要密码

sudo visudo
# 在%sudo ALL=(ALL:ALL) ALL下面添加一行,按下方提示命令(^代表Ctrl键)保存,保存使用Y,并按下回车。
hduser_ ALL=(ALL) NOPASSWD: ALL
下载安装

在官网下载Hadoop https://hadoop.apache.org/releases.html
https://hadoop.apache.org/release/2.7.7.html
下载binary版,如hadoop-2.7.7.tar.gz

# 或者wget获取 友情提示:wget -o 新名称
sudo mkdir -p /home/app/download/hadoop/;cd /home/app/download/hadoop/;sudo wget https://archive.apache.org/dist/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz

在这里插入图片描述

# 解压
sudo tar xvzf hadoop-xxx.jar -C 目标目录 # sudo tar xvzf hadoop-2.7.7.tar.gz -C /home/app/
配置 - 更新update下述文件
单节点配置

它们在${HADOOP_HOME}/etc/hadoop/目录,${HADOOP_HOME}==Hadoop安装的根目录
如:cd /home/app/hadoop-2.7.7

  • sudo vim ${HADOOP_HOME}/etc/hadoop/core-site.xml
    创建目录
sudo mkdir -p /home/app/hadooptmp;
<configuration>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/home/app/hadooptmp</value>
		<description>Parent dir for other temp dir</description>
	</property>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://127.0.0.1:54310</value>
		<description>The name of the default file system.</description>
	</property>
</configuration>
  • sudo vim ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
    sudo mkdir -p /home/app/hdfsdata
<configuration>
	<property>
		<name>dfs.replication</name>
		<value>1</value>
		<description>Default block replication.</description>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>/home/app/hdfsdata</value>
	</property>
</configuration>
  • sudo vim ${HADOOP_HOME}/etc/hadoop/mapred-site.xml # 待创建文件后再执行
    创建文件
sudo cp ${HADOOP_HOME}/etc/hadoop/mapred-site.xml.template ${HADOOP_HOME}/etc/hadoop/mapred-site.xml
<configuration>
	<property>
		<name>mapreduce.jobtracker.address</name>
		<value>127.0.0.1:54311</value>
		<description>MapReduce job tracker runs at this host and port.</description>
	</property>
</configuration>
  • sudo vim ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
# export JAVA_HOME=${JAVA_HOME} # 注释这行,改为↓
export JAVA_HOME=/data/app/jdk1.8.0_201 # 你自己的JAVA_HOME
启动
  • 单节点配置
# 手动创建目录并授权 hduser_ 是用于操作HDFS的账户,自定
sudo mkdir -p /home/app/hadooptmp;\
sudo chown -R hduser_ /home/app/hadooptmp;\
sudo mkdir -p /home/app/hdfsdata;\
sudo chown -R hduser_ /home/app/hdfsdata;
# 格式化 namenode
cd ${HADOOP_HOME} # 你的Hadoop根目录,因机而异,如 cd /home/app/hadoop-2.7.7.亦可把启动命令配置到环境变量而简化启动脚本
cd ${HADOOP_HOME};bin/hadoop namenode -format
启动节点
cd ${HADOOP_HOME};sbin/start-all.sh
# 接着可能需要多次输入密码,也许要输入用户密码
# 如果启动不完全,需要授权目录,找到Hadoop相关目录进行授权
sudo chown -R hduser_:hadoop_ ${HADOOP_HOME} # 如sudo chown -R hduser_:hadoop_ /home/app/hadoop-2.7.7将权限赋予该用户-hduser_ chown的意思:变更文件所有者,即change owner
# 注意,如果报错目录不存在,请sudo mkdir -p 目录 来创建目录。如↓
sudo mkdir -p /home/app/hadoop-2.7.7/logs
sudo chown -R hduser_:hadoop_ logs
sudo chmod -R 777 logs

启动成功 exec jps 会看到5个Hadoop进程。五个。
在这里插入图片描述

  • Web页面的访问地址

hadoop admin http://localhost:8088/cluster
namenode http://localhost:50070
hdfs namenode http://localhost:8042
hdfs hdfs://localhost:54310 - The name of the default file system.
请访问上述地址试试,跨机访问请开放端口

  • 配置环境变量
sudo vim /etc/profile
export HADOOP_HOME=/home/app/hadoop-2.7.7
export PATH=$PATH:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
source /etc/profile

这样就可以直接使用hadoop命令了.
在这里插入图片描述

  • 简单命令
命令意义备注别名
hadoop dfs -ls -R /递归查看根目录下的目录,以及子目录http://domain:50070也可以浏览目录hdfs -ls -R /
MapReduce实操
  • 先看个直观图,它具象了MR的操作
    在这里插入图片描述
实例1 - 过滤关键词 - 获取文中的关键词
  • 步骤 - 阅读注释
# 新建用户目录
hadoop dfs -mkdir -p ~/input007 # ~代替本地用户根目录
# 进入Hadoop根目录
# 将一些xml文件放入input007目录
cd ${HADOOP_HOME};hdfs dfs -put etc/hadoop/*.xml ~/input007 # 新版本使用hdfs dfs
cd ${HADOOP_HOME};hadoop dfs -put etc/hadoop/*.xml ~/input007 # 如果当前用户名称是hduser_,则目录可以省略/user/hduser_
# 执行mp,获取文件中正则dfs[a-z.]+匹配的关键词
hadoop jar ${HADOOP_HOME}/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar grep ~/input007 ~/output007 'dfs[a-z.]+' # output007目录自动创建
# 执行完毕,看下刚才的成果,从output007里取结果,output007对应上面的output007
hdfs dfs -cat ~/output007/*
  1. 把xml文件放入了HDFS目录后的效果↓,访问地址:http://ip:50070/explorer.html#/user/hduser_/input007
    在这里插入图片描述
  • 成功,结果见下图
    在这里插入图片描述
  • 核实. xml文件里确有这几个关键词↓
    在这里插入图片描述

实际应用场景:过滤敏感词汇 | 查询等

实例2 - 关键词统计

sudo mkdir -p /home/project/files;cd /home/project/files

新建words.txt文件,内容如下

在这里插入图片描述

# 将文件放入input007目录
hdfs dfs -put /home/project/files/words.txt ~/input007
# 进入根目录
cd ${HADOOP_HOME}
# 执行mp,开始统计
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /user/hduser_/input007/words.txt /user/hduser_/output010
# 查看
hadoop dfs -ls /user/hduser_/output010
# 查看统计结果
hadoop dfs -cat /user/hduser_/output010/part-r-00000

统计成功
在这里插入图片描述
在这里插入图片描述
实际应用场景: 微博|评论|搜索词频统计等

实例3 - π值计算

shell

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar pi 100 100

在这里插入图片描述
增加投掷次数↓,更精确了。

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar pi 100 150

在这里插入图片描述
↑基于极限求π值,第一个参数:100个任务,第二个参数:每个任务处理100个点。两个参数的乘积即是总的投掷次数。平均来说,投掷次数与精确度成正比。
计算的π值有点那个意思了。
更多实例待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值