hadoop基础学习
Ubuntu基本操作
这是一些基本的命令!其实在hadoop文件系统中的命令大部分是相似的。
快捷键
ubuntu从桌面模式切换到文本模式:(文本模式)ctrl +alt+ F6,(图形模式)ctr
l +alt +F6
常用命令
基本命令,我们增加了如下几点新功能,帮助你用它写博客:
- pwd 用作显示工作目录的路径名称;
- whoami 查看当前有效用户名的命令;
- ifconfig 显示或配置网络设备(网络接口卡)的命令;
- mkdir,rm,cp,mv,touch ;
- echo显示结果,或者字符串,可以与从定向使用;
- redirect: >与>> 重定向 > 表示覆盖文件内容,而>>表示追加到文件后;
- cat,less,more,head,tail, 等;
- find /usr/local | grep xxx 查找文件 |代表前面的输入作为结果传到后面grep作为过滤器。
- tar - xvzf,gzip,gunzip 解压 压缩文件。
- jps查看java的运行进程
目录与权限
目录
- / 根目录;
- /bin ,/sbin 可执行文件;
- /boot 引导;
- /etc放置配置文件 ;
- /mnt挂载文件;
- /home 主目录;
- /usr放自己的文件(解压后的文件)
- 输入 ls -al 会看到 :
文件 | 类型 |
---|---|
d | directory |
- | file |
b | block |
l | link(相当于快捷方式) |
权限
user(u:文件拥有者),Group(g:拥有者算在的组),other(o:其他的身份),**a(all)**所有身份
r:read w:write, x:execute, -:none,
type | user | group | other |
---|---|---|---|
d | rwx | rwx | rwx |
权限 | 421 | 421 | 421 |
权限修改:
chmod u+w xxx
chmod 777 xxx
软件包的操作
国内软件包源一般选取清华或者163等
修改下面的配置文件163
sudo vim /etc/apt/sources.list
sudo apt-get update
sudo apt-get upgrade
软件包的常用命令(下载 查找 卸载,删除)
sudo apt-get install xxx
sudo apt-cache search xxx
sudo apt-get remove xxx
sudo apt-get purge xxx
sudo dpkg -l |grep xxx
安装deb软件包 dpkg -i xxx.deb
删除软件包 dpkg -r xxx.deb
连同配置文件一起删除 dpkg -r --purge xxx.deb
查看软件包信息 dpkg -info xxx.deb
查看文件拷贝详情 dpkg -L xxx.deb
查看系统中已安装软件包信息 dpkg -l
重新配置软件包 dpkg-reconfigure xxx
本地软件源制作
sudo apt-get install dpkg-dev
mkdir ~/software
cp -R -v /var/cache/apt/archives/* ~/software
sudo dpkg-scanpackages ~/software /dev/null | gzip>~/software/Packages.gz
复制整个software文件夹到host主机
安装新ubuntu客户机
从host复制software文件夹到主目录下
编辑/etc/apt/source.list文件
deb file:/home/ubuntu/software ./
Hadoop安装
JDK,hadoop安装配置
jdk下载(oracle),安装,配置(注意)
配置的时候最好在 /etc/enviroment 中配置
JAVA_HOME='/usr/soft/jdkxxx'
PATH=""XXXXXX:/usr/soft/jdkxxx/bin"
source enviroment
java -version
hadoop 下载(apache),安装download,在 /etc/enviroment 中配置,此处不设置HADOOP_HOME是因为HADOOP_HOME在运行过程是不断变化的。
HADOOP_INSTALL="/usr/soft/hadoop-3.2.0"
PATH="XXXXX:/usr/soft/hadoop-3.2.0/bin:/usr/soft/hadoop-3.2.0/sbin"
hadoop 基础与配置
处理海量数据
- 存储:分布式文件系统(HDFS)
- 运算 mapreduce <map() + reduce>
节点的设计:
一个HDFS集群上可能包含成千上万个DataNode节点,这些DataNode定时和NameNode通信,接受NameNode的指令.为了减轻NameNode的负担,NameNode上并不永久保存那个DataNode上的那些数据块的信息,而是通过DataNode启动时的上报,来更新NameNode上的隐射表.
- NameNode:(名称节点)在其本地磁盘上保存为文件(持久化),就是目录
- DataNode:(数据节点)列表,在此处存放数据
DataNode和NameNode 建立以后,就会不断地和NameNode保持一致,但是NameNode不会发起到DataNode的请求,在这个通信中,它们是严格按照 客户端/服务器架构.当然DataNode也作为服务器接受来自客户端的访问,处理数据块的读/写请求,而且DataNode之间也会相互通信,执行数据块的复制任务,当客户端在写操作的时候,DataNode需要相互配合,保证写操作的一致性.
三种模式
- 独立模式
没有运行的守护程序,说有程序在一个JVM中运行.适合开发期间运行MapReduce程序,源于他的易于测试与调试. - 伪分布模式(完全分布模式的特例)
守护程序在本地主机,模拟一个小规模集群. - 完全分布式模式
守护程序运行在多个主机上的集群.
独立模式配置
- Nothing!(不需要配置)
- local FileSystem 和 Local MR job runner 仅仅用的本地的文件系统
伪分布模式配置
两种方法/usr/soft/hadoop-3.2.0/etc/hadoop
:
在配置之前最好重新复制一份hadoop配置文件(下文的hadoop_pseudo)
配置脚本
- core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost/</value>
</property>
</configuration>
- hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
- yarn-site.xml(资源管理框架)
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
- mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
配置SSH
配置ssh是为了每次名称节点访问数据节点的时候都要输入口令提示
sudo apt-get install ssh
ssh-keygen -t rsa -P " -f ~/.ssh/id_rsa
cat id_rsa.pub >> ~/.ssh/authorized_keys
ssh localhost
exit(最好登出)
格式化HDFS系统
格式化文件系统
hadoop namenode -format
指定配置目录(hadoop.pseudo是etc/hadoop的拷贝文件)
- set HADOOP_CONF_DIR 环境变量
最好是设置环境变量的方法要不然每次都得按第二种设置
export HADOOP_CONF_DIR=$HADOOP_INSTALL/etc/hadoop_pseudo
- 设置 - -config 配置参数
启动守护进程
start-dfs.sh --config $HADOOP_INSTALL/etc/hadoop_pseudo
start-yarn.sh --config $HADOOP_INSTALL/etc/hadoop_pseudo
或者
start-all.sh --config $HADOOP_INSTALL/etc/hadoop_pseudo
输入jsp 可以查询是否有多个进程,若有如下图所示则启动成功或者web页面查看
[nn] http://localhost:500070/
[rm] http://localhost:8088/
[hs] http://localhost:19888/
关闭守护进程
stop-yarn.sh
stop-dfs.sh
查看hadoop下的目录
hadoop fs -ls /
可以尝试在hadoop下创建文件
hadoop fs -mkdir /user/
完全分布模式配置(在s0上配置,拷贝到其它虚拟机上)
但是上两种配置方式还有缺陷,建立Hadoop的快捷连接方式
补充:符号连接=windos的快捷方式(ln -s hadoop_cluster hadoop)
硬连接:hard link,磁盘上的两个相同的文件或者是相同的目录,实时同步的.
我们在虚拟机上克隆几个相同的ubuntu环境,然后修改每个虚拟机上的/etc/hosts,
127.0.0.1 localhost
127.0.1.1 wwk-Aspire-V3-572G
192.168.210.140 s0
192.168.210.141 s1
192.168.210.142 s2
192.168.210.143 s3
把hosts 远程拷贝到各个虚拟机上
sudo scp /etc/hosts root@192.168.210.141:/etc/hosts
然后与伪分布的配置方法一样/usr/soft/hadoop-3.2.0/etc/hadoop_cluster
网络拓扑图:
- core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://s0/</value>
</property>
</configuration>
- hdfs-site.xml (2代表s1,s2)
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
- yarn-site.xml(资源管理框架)
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>s0</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
- mapred-site.xml 的配置不变
但是并不知道配置的数据节点是哪两个,需要配置/usr/soft/hadoop-3.2.0/etc/hadoop_cluster/slaves文件
s1
s2
注意:s0的所有文件必须拷贝到所有其他的节点上
scp -r hadoop_cluster ubuntu@s1:/usr/soft/hadoop-3.2.0/etc/
scp -r hadoop_cluster ubuntu@s2:/usr/soft/hadoop-3.2.0/etc/
scp -r hadoop_cluster ubuntu@s3:/usr/soft/hadoop-3.2.0/etc/
启动方式与伪分布式一样