hadoop常用操作命令
#############centos6.8IP常用操作命令#######################
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.3.131
GATEWAY=192.168.3.2
NETMASK=255.255.255.0
DNS1=192.168.3.2
192.168.3.131 node-01
192.168.3.132 node-02
192.168.3.133 node-03
#############centos6.8修改系统信息常用操作命令#######################
[root@vae ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
[root@vae ~]# vi /etc/udev/rules.d/70-persistent-net.rules
[root@vae ~]# vi /etc/sysconfig/network
#############防火墙常用操作命令#######################
[root@node-04 ~]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
[root@node-04 ~]# chkconfig iptables off
#############windows hosts文件位置常用操作命令#######################
C:\Windows\System32\drivers\etc
#############配置域名映射关系常用操作命令#######################
vi /etc/hosts
192.168.3.131 node-01
192.168.3.132 node-02
192.168.3.133 node-03
#############配置免密登录常用操作命令#######################
ssh-keygen
ssh-copy-id node-01
ssh-copy-id node-02
ssh-copy-id node-03
#############配置环境变量#######################
export JAVA_HOME=/root/apps/jdk1.8.0_201 export HADOOP_HOME=/root/apps/hadoop-2.8.1 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#############datanode和namenode常用操作命令#######################
修改slaves 配置文件(datanode)
/apps/hadoop-2.8.1/etc/hadoop
vi slaves
初始化datanode和namenode数据目录(先删除原有的namenode和datanode的数据目录)
rm -rf /apps/dfs(每台机上都要执行)
初始换数据目录
hadoop namenode -format
单独启动datanode
hadoop-daemon.sh start datanode
/apps/hadoop-2.8.1/sbin/start-dfs.sh
http://node-01:50070
#############安装yarn常用操作命令#######################
修改YARN的配置文件
[root@node-04 hadoop-2.8.1]# vi /apps/hadoop-2.8.1/etc/hadoop/yarn-site.xml
<configuration> <property> <name>yarn.resourcemanager.hostnamename> <value>node-04value> property> <property> <name>yarn.nodemanager.aux-servicesname> <value>mapreduce_shufflevalue> property> configuration>
启动YARN(在node-04上安装到)
/apps/hadoop-2.8.1/sbin/start-yarn.sh
测试是否成功安装,web页面访问正常
http://node-04:8088/cluster/nodes
#############spark常用操作命令#######################
启动spark
/apps/spark-2.2.3-bin-hadoop2.7/sbin/start-all.sh
/apps/spark-2.2.3-bin-hadoop2.7/sbin/stop-all.sh
启动demo
/apps/spark-2.2.3-bin-hadoop2.7/bin/spark-submit --master spark://node-01:7077 --class org.apache.spark.examples.SparkPi /apps/spark-2.2.3-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.2.3.jar 1000
启动demo指定运行时候的参数
/apps/spark-2.2.3-bin-hadoop2.7/bin/spark-submit --master spark://node-01:7077 --class org.apache.spark.examples.SparkPi --executor-memory 512mb --total-executor-cores 2 /apps/spark-2.2.3-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.2.3.jar 100
查看spark运行情况
http://node-01:8080/
提交一个spark程序到spark-shell
用的是spark的local模式运行的
/apps/spark-2.2.3-bin-hadoop2.7/bin/spark-shell
指定master运行在集群上
/apps/spark-2.2.3-bin-hadoop2.7/bin/spark-shell --master spark://node-01:7077
启动,停止fastDfs
/apps/hadoop-2.8.1/sbin/start-dfs.sh
/apps/hadoop-2.8.1/sbin/stop-dfs.sh
#############hdfs命令行客户端的常用操作命令#######################
0、查看hdfs中的目录信息
hadoop fs -ls /hdfs路径
1、上传文件到hdfs中
hadoop fs -put /本地文件 /aaa
hadoop fs -copyFromLocal /本地文件 /hdfs路径 ## copyFromLocal等价于 put
hadoop fs -moveFromLocal /本地文件 /hdfs路径 ## 跟copyFromLocal的区别是:从本地移动到hdfs中
2、下载文件到客户端本地磁盘
hadoop fs -get /hdfs中的路径 /本地磁盘目录
hadoop fs -copyToLocal /hdfs中的路径 /本地磁盘路径 ## 跟get等价
hadoop fs -moveToLocal /hdfs路径 /本地路径 ## 从hdfs中移动到本地
3、在hdfs中创建文件夹
hadoop fs -mkdir -p /aaa/xxx
4、移动hdfs中的文件(更名)
hadoop fs -mv /hdfs的路径 /hdfs的另一个路径
5、删除hdfs中的文件或文件夹
hadoop fs -rm -r /aaa
6、修改文件的权限
hadoop fs -chown user:group /aaa
hadoop fs -chmod 700 /aaa
7、追加内容到已存在的文件
hadoop fs -appendToFile /本地文件 /hdfs中的文件
8、显示文本文件的内容
hadoop fs -cat /hdfs中的文件
hadoop fs -tail /hdfs中的文件
#########################################
Demo
启动fastDfs
/apps/hadoop-2.8.1/sbin/start-dfs.sh
查看fastDfs运行情况
http://node-01:50070/
上传要统计的文件
hadoop fs -put /apps/softs/kkk.txt /wc
启动spark
/apps/spark-2.2.3-bin-hadoop2.7/sbin/start-all.sh
查看spark运行情况
http://node-01:8080/
指定master运行在集群上
/apps/spark-2.2.3-bin-hadoop2.7/bin/spark-shell --master spark://node-01:7077
分组聚合
sc.textFile("hdfs://node-01:9000/wc").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
分组聚合进行排序
sc.textFile("hdfs://node-01:9000/wc").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).collect
停止fastDfs
/apps/hadoop-2.8.1/sbin/stop-dfs.sh
停止spark
/apps/spark-2.2.3-bin-hadoop2.7/sbin/stop-all.sh
###################################################
1、什么是大数据
基本概念
在互联网技术发展到现今阶段,大量日常、工作等事务产生的数据都已经信息化,人类产生的数据量相比以前有了爆炸式的增长,以前的传统的数据处理技术已经无法胜任,需求催生技术,一套用来处理海量数据的软件工具应运而生,这就是大数据!
换个角度说,大数据是:
1、有海量的数据
2、有对海量数据进行挖掘的需求
3、有对海量数据进行挖掘的软件工具(hadoop、spark、storm、flink、tez、impala......)
大数据在现实生活中的具体应用
电商推荐系统:基于海量的浏览行为、购物行为数据,进行大量的算法模型的运算,得出各类推荐结论,以供电商网站页面来为用户进行商品推荐
精准广告推送系统:基于海量的互联网用户的各类数据,统计分析,进行用户画像(得到用户的各种属性标签),然后可以为广告主进行有针对性的精准的广告投放
2、什么是hadoop
hadoop中有3个核心组件:
分布式文件系统:HDFS —— 实现将文件分布式存储在很多的服务器上
分布式运算编程框架:MAPREDUCE —— 实现在很多机器上分布式并行运算
分布式资源调度平台:YARN —— 帮用户调度大量的mapreduce程序,并合理分配运算资源
3、hdfs整体运行机制
hdfs:分布式文件系统
hdfs有着文件系统共同的特征:
1、有目录结构,顶层目录是: /
2、系统中存放的就是文件
3、系统可以提供对文件的:创建、删除、修改、查看、移动等功能
hdfs跟普通的单机文件系统有区别:
1、单机文件系统中存放的文件,是在一台机器的操作系统中
2、hdfs的文件系统会横跨N多的机器
3、单机文件系统中存放的文件,是在一台机器的磁盘上
4、hdfs文件系统中存放的文件,是落在n多机器的本地单机文件系统中(hdfs是一个基于linux本地文件系统之上的文件系统)
hdfs的工作机制:
1、客户把一个文件存入hdfs,其实hdfs会把这个文件切块后,分散存储在N台linux机器系统中(负责存储文件块的角色:data node)<准确来说:切块的行为是由客户端决定的>
2、一旦文件被切块存储,那么,hdfs中就必须有一个机制,来记录用户的每一个文件的切块信息,及每一块的具体存储机器(负责记录块信息的角色是:name node)
3、为了保证数据的安全性,hdfs可以将每一个文件块在集群中存放多个副本(到底存几个副本,是由当时存入该文件的客户端指定的)
综述:一个hdfs系统,由一台运行了namenode的服务器,和N台运行了datanode的服务器组成!
4、搭建hdfs分布式集群
4.1 hdfs集群组成结构:
读数据流程
8、mapreduce快速上手
小案例:
统计HDFS的/wordcount/input/a.txt文件中的每个单词出现的次数——wordcount
明白了一点:可以在任何地方运行程序,访问HDFS上的文件并进行统计运算,并且可以把统计的结果写回HDFS的结果文件中;
但是,进一步思考:如果文件又多又大,用上面那个程序有什么弊端?
慢!因为只有一台机器在进行运算处理!
如何变得更快?
核心思想:让我们的运算程序并行在多台机器上执行!
9、mapreduce运行平台YARN
mapreduce程序应该是在很多机器上并行启动,而且先执行map task,当众多的maptask都处理完自己的数据后,还需要启动众多的reduce task,这个过程如果用用户自己手动调度不太现实,需要一个自动化的调度平台——hadoop中就为运行mapreduce之类的分布式运算程序开发了一个自动化调度平台——YARN
安装yarn集群
yarn集群中有两个角色:
主节点:Resource Manager 1台
从节点:Node Manager N台
Resource Manager一般安装在一台专门的机器上
Node Manager应该与HDFS中的data node重叠在一起
修改配置文件:
yarn-site.xml
然后复制到每一台机器上
然后在node-04上,修改hadoop的slaves文件,列入要启动nodemanager的机器
然后将node-04到所有机器的免密登陆配置好
然后,就可以用脚本启动yarn集群:
sbin/start-yarn.sh
停止:
sbin/stop-yarn.sh
启动完成后,可以在windows上用浏览器访问resourcemanager的web端口:
http://node-04:8088
看resource mananger是否认出了所有的node manager节点
10、运行mapreduce程序
首先,为你的mapreduce程序开发一个提交job到yarn的客户端类(模板代码):
l 描述你的mapreduce程序运行时所需要的一些信息(比如用哪个mapper、reducer、map和reduce输出的kv类型、jar包所在路径、reduce task的数量、输入输出数据的路径)
l 将信息和整个工程的jar包一起交给yarn
然后,将整个工程(yarn客户端类+ mapreduce所有jar和自定义类)打成jar包
然后,将jar包上传到hadoop集群中的任意一台机器上
最后,运行jar包中的(YARN客户端类)
[root@node-04 ~]# hadoop jar wc.jar cn.edu360.hadoop.mr.wc.JobSubmitter