数据结构算法第二天
一、栈的表示和实现
栈作为一种特殊的线性表,在计算机中主要有两种基本的存储结构:顺序存储结构和链式存储结构。采用顺序存储结构的栈简称为顺序栈,采用链式存储结构的栈简称为链栈。
1.顺序栈
顺序栈是用顺序存储结构实现的栈,即利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时由栈操作的特殊性,还必须附设一个位置指针top(栈顶指针),来动态的址是栈顶元素在顺序栈中的位置。通常以top等于负一表示空栈。
顺序栈的存储结构可以用C语言中的一堆数组来表示定义如下。
#define Stack_Size 50 / * 设栈中元素个数为50 * /
typedef struct
{
StackElementType elem[Stack_Size]; / * elem是存放栈中元素的一堆数组 * /
int top; / * top用来存放栈顶元素的下标,top为负一表示空栈 * /
}SeqStack;
【算法描述】初始化顺序栈
void InitStack(SeqeStack*S)
{
S->top=-1;
} / * 构造一个空栈 * /
进栈时,首先判断当前栈是否已满,如果栈已满,则在进栈就会发生上溢 。
【算法描述】顺序栈进栈操作
int Push(SeqStack *S,StackElementType x)
{ / * 将x置入S栈新栈顶 * /
if(S->top==Stack_Size-1) return(FALSE); / * 栈已满 * /
S->top++; / * 修改栈顶指针 * /
S->elem[S->top]=x; / * x进栈 * /
return(TRUE);
}
出栈时,首先判断当前栈是否为空,如果栈空,则要出栈就会发生下溢。
【算法描述】顺序栈出栈操作
int Pop(SeqStack * S,StackElementType * x)
{ / * 将S栈顶元素弹出,放到x所指的存储空间中带出 * /
if(S->top==-1) / * 栈为空 * /
return(FALSE);
else
{
* x=S->elem[S->top]; / * 栈顶元素赋给x * /
S->top--; / * 修改栈顶指针 * /
return(TRUE);
}
}
Hadoop入门
一、Hadoop集群搭建
⚫集群搭建方式:①单机模式 ②集群模式
在单机模式下,要求Windows系统运行内存至少是8G
在集群模式下,要求Windows系统运行内存至少是16G
二、Hadoop集群使用
⚫Hadoop启动和关闭-单节点模式
集群一键启动和关闭
•一键关闭大数据环境 : /onekey/my-stop-all.sh
•一键启动大数据环境 : /onekey/my-start-all.sh
⚫Hadoop页面访问-集群模式
端口
2.x HDFS : 50070 yarn页面 : 8088
3.x HDFS : 9870 日志 : 19888
HIVE :10000
三、HDFS的副本机制
四、HDFS的Shell命令
Hadoop提供了文件系统的shell命令使用格式如下:
hadoop fs <args>(官方推荐)或者 hdfs dfs <args>
补充
l l :查看目录下的文件和文件夹的详细信息
ls :显示文件列表
bin:用于执行二进制可执行文件,通常存放可执行文件
cd - :返回到上一次的工作目录
cd ..:返回上一层目录
etc :用于探索和管理操作系统的配置文件和目录
share:用于共享文件夹或打印机,是其他用户可以访问和使用共享资源chmod:用于修改文件或目录的权限
mv :用于移动文件和目录,也可以用于文件和目录的重命名
pwd :显示用户当前所处的工作目录,或者说是显示当前工作目录的绝对路径
敲重点命令
hadoop fs -put :将单个的源文件或者多个源文件srcs从本地文件系统上传到目标文件系统中。
hadoop fs -get :将HDFS文件拷贝到本地文件系统
hadoop fs -cp :将文件拷贝到目标路径中hadoop fs -cat :将参数所指示的文件内容输出到控制台
shutdown -h now :关机
reboot: 重启(一般不关机服务器,用该命令重启)yarn application -kill [application_id] : 在yarn资源管理页面找到application的id,使用kill终止任务
五、Hive
Apache Hive 是一款反不是SQL计算的工具,其主要功能是
1. hive 是基于hadoop实现的工具,用来进行数据提取、转化、加载,这是一种可以存储查询和分析存储在hadoop中的大规模数据的机制。
2. hive将文件转化为表结构,并提供给SQL查询功能,能将SOL语句转变为MapReduce任务来执行。
3. hive driver驱动程序:解析器、编译器、优化器、执行器
Parser(解析器):将SQL字符串转化成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行语法分析比如表是否存在、字段是否存在、SQL语句是否有误。
Compiler(编译器):对SQL语句进行语法、词法、语义的编译(需要跟元数据关联),编译完成后会生成一个执行计划。hive上就是编译成mapreduce的job。
Optimizer(优化器):将执行计划进行优化,减少不必要的列、使用分区使用索引等,优化job。
Executer(执行器):将优化后的执行计划提交给Hadoop的yarn上执行,提交job。
4. metastore元数据存储
描述数据的数据称为元数据
5. Namenode 记录块存储位置。
6. Hive的两个服务:
①Metastore服务
客户端通过连接metastore服务,matestore在连接mysql数据库来存储元数据。这样多个客户端可以同时连接,且这些客户端不需要知道mysql数据库的用户名和密码,只需要连接matestore服务即可。
②HiveServer2服务
HiveServer2服务允许用户通过JDBC或ODBC连接到hive,进行数据查询和分析。
7. ifconfig
用于显示或配置网络设备(网口接口卡)的命令
补充说明:
可设置网络设备的状态,或显示当前的设置
8. jps -m
用来区别两个RunJar
9.- 表示文件
d 表示文件夹