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


文件名称 版本号 作者 qq 备注
实操_大数据学习_v0.0.2_持续更新。。。 v0.0.2 飞豺 8416837 Hadoop2.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_ # ↓图

在这里插入图片描述

安装SSH服务

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

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

免密登陆设置

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
# 可能以上命令没起效 , 仍然需要输入PW,Ubuntu OS ↓
cat /home/hduser_/.ssd/id_rsa.pub >> /home/hduser_/.ssh/authorized_keys # 可能报错:没有.ssd目录
# Ubuntu系统下,免密若不起效,并不影响后续操作

*
执行脚本时,免密

sudo visudo
# 在%sudo ALL=(ALL:ALL) ALL下面添加一行
username ALL=(ALL) NOPASSWD: ALL

下载安装

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

# 或者wget获取
wget http://mirrors.tuna.tsinghua.edu.cn/apache/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安装的根目录
  • core-site.xml
<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://localhost:54310</value>
		<description>The name of the default file system.</description>
	</property>
</configuration>
  • hdfs-site.xml
<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>
  • mapred-site.xml.template
<configuration>
	<property>
		<name>mapreduce.jobtracker.address</name>
		<value>localhost:54311</value>
		<description>MapReduce job tracker runs at this host and port.</description>
	</property>
</configuration>
  • hadoop-env.sh
# export JAVA_HOME=${JAVA_HOME} # 注释这行,改为↓
export JAVA_HOME=/data/app/jdk1.8.0_201 # 你自己的JAVA_HOME

启动

  • 单节点
# 手动创建目录并授权
sudo mkdir -p /home/app/hadooptmp
sudo chown -R abuntucc /home/app/hadooptmp
sudo mkdir -p /home/app/hdfsdata
sudo chown -R abuntucc /home/app/hdfsdata
# 格式化 namenode
cd ${HADOOP_HOME} # 你的Hadoop根目录,因机而异。亦可把启动命令配置到环境变量而简化启动脚本
bin/hadoop namenode -format
sbin/start-all.sh
# 如果启动不完全,需要授权目录,找到Hadoop相关目录进行授权
sudo chown -R hduser_:hadoop_ ${HADOOP_HOME} # 将权限赋予该用户-hduser_ chown的意思:变更文件所有者
# 如果报错目录不存在,请sudo mkdir -p 目录 来创建目录

启动成功 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/project/hadoop/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也可以浏览目录

MapReduce实操

  • 先看个直观图,它具象了MR的操作
    在这里插入图片描述
实例1 - 过滤关键词 - 获取文中的关键词
  • 步骤 - 阅读注释
# 新建用户目录
hadoop dfs -mkdir -p /user/hduser_/input007
# 进入Hadoop根目录
cd ${HADOOP_HOME}
# 将一些xml文件放入input007目录
hadoop dfs -put etc/hadoop/*.xml /user/hduser_/input007 # 如果当前用户名称是hduser_,则目录可以省略/user/hduser_
# 执行mp,获取文件中正则dfs[a-z.]+匹配的关键词
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar grep /user/hduser_/input007 /user/hduser_/output007 'dfs[a-z.]+' # output007目录自动创建
# 执行完毕,看下刚才的成果,从output007里取结果,output007对应上面的output007
hadoop dfs -cat /user/hduser_/output007/*

把xml文件放入了HDFS目录后的效果↓
在这里插入图片描述

  • 成功,结果见下图
    在这里插入图片描述
  • 核实. xml文件里确有这几个关键词↓
    在这里插入图片描述

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

实例2 - 关键词统计

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

在这里插入图片描述

# 将文件放入input007目录
hadoop dfs -put /home/project/files/words.txt /user/hduser_/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个点。两个参数的乘积即是总的投掷次数。平均来说,投掷次数与精确度成正比。
计算的π值有点那个意思了。
更多实例待续。。。

发布了49 篇原创文章 · 获赞 6 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/cc007cc009/article/details/91488955