linux学习lesson33

MapReduce 与 Pig 的对比分析 随着互联网数据量从 TB 级跃升至 EB 级,传统单节点计算已无法满足需求。分布式计算框架应运而生,其中 MapReduce 是最早被广泛使用的「通用解决方案」,而 Pig 则是为解决 MapReduce 编程复杂度问题而设计的「上层工具」。本文将聚焦二者的核心差异、适用场景与技术原理,帮助开发者在实际项目中做出更优选择。本文将按照「概念引入→原理对比→代码实战→场景分析」的逻辑展开,通过生活案例、技术流程图、代码示例等方式,让复杂概念「可视化」。MapReduce。 阅读详情

目录

1 linux网络相关

2 firewalld和netfilter

3 netfilter5表5链介绍

4 iptables语法


1 linux网络相关

  • ifconfig查看网卡ip(yum install net-tools)
[root@worker1 ~]# yum install -y net-tools
  • ip addr查看网卡ip
[root@worker1 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:e5:56:b1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.139.100/24 brd 192.168.139.255 scope global eno16777736
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fee5:56b1/64 scope link
       valid_lft forever preferred_lft forever
  • ifconfig -a 查看没启动的网卡
[root@worker1 network-scripts]# ifconfig -a
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.139.100  netmask 255.255.255.0  broadcast 192.168.139.255
        inet6 fe80::20c:29ff:fee5:56b1  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:e5:56:b1  txqueuelen 1000  (Ethernet)
        RX packets 520582  bytes 713621719 (680.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 144471  bytes 15896861 (15.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 启动网卡/关闭网卡ifupeno16777736:0/ifdowneno16777736:0
  • 一般使用方式ifdown eno16777736:0&& ifupeno16777736:0
[root@worker1 network-scripts]# ifup eno16777736:0
[root@worker1 network-scripts]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.139.100  netmask 255.255.255.0  broadcast 192.168.139.255
        inet6 fe80::20c:29ff:fee5:56b1  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:e5:56:b1  txqueuelen 1000  (Ethernet)
        RX packets 520629  bytes 713625509 (680.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 144499  bytes 15900837 (15.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno16777736:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.139.99  netmask 255.255.255.0  broadcast 192.168.139.255
        ether 00:0c:29:e5:56:b1  txqueuelen 1000  (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@worker1 network-scripts]# ifdown eno16777736:0
[root@worker1 network-scripts]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.139.100  netmask 255.255.255.0  broadcast 192.168.139.255
        inet6 fe80::20c:29ff:fee5:56b1  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:e5:56:b1  txqueuelen 1000  (Ethernet)
        RX packets 520673  bytes 713629679 (680.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 144530  bytes 15905615 (15.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 设定虚拟网卡eno16777736:0  输入时候是eno16777736:\0
  • 拷贝eno16777736网卡的配置文件改名为eno16777736:0
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736:0
UUID=32447f57-e011-4b11-97ea-a7fe8a52099a
DEVICE=eno16777736:0
ONBOOT=yes
IPADDR=192.168.139.99
NETMASK=255.255.255.0
  • mii-tool eno16777736 查看网卡是否连接
[root@worker1 ~]# mii-tool eno16777736
eno16777736: negotiated 1000baseT-FD flow-control, link ok
[root@worker1 ~]# mii-tool eno16777736\:0
eno16777736:0: negotiated 1000baseT-FD flow-control, link ok
  • ethtool eno16777736 也可以查看网卡是否连接
[root@worker1 ~]# ethtool eno16777736:0
Settings for eno16777736:0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: off (auto)
    Supports Wake-on: d
    Wake-on: d
    Current message level: 0x00000007 (7)
                   drv probe link
    Link detected: yes
[root@worker1 ~]# ethtool eno16777736
Settings for eno16777736:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: off (auto)
    Supports Wake-on: d
    Wake-on: d
    Current message level: 0x00000007 (7)
                   drv probe link
    Link detected: yes
  • 更改主机名 hostnamectl set-hostname worker01
[root@worker1 ~]# hostnamectl set-hostname worker01
[root@worker1 ~]# hostname
worker01
  • 相关的配置文件/etc/hostname
[root@worker1 ~]# vim /etc/hostname
worker01

退出重新登陆或者进入子shell都可以生效

  • DNS配置文件/etc/resolv.conf   //这里是临时修改,永久更改是在网卡的配置文件里
[root@worker1 ~]# vim /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 119.29.29.29
  • /etc/hosts文件 临时解析某个域名,自定义域名
[root@worker1 ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.139.100 worker01
[root@worker1 ~]# ping -c 3 worker01
PING worker01 (192.168.139.100) 56(84) bytes of data.
64 bytes from worker01 (192.168.139.100): icmp_seq=1 ttl=64 time=0.110 ms
64 bytes from worker01 (192.168.139.100): icmp_seq=2 ttl=64 time=0.056 ms
64 bytes from worker01 (192.168.139.100): icmp_seq=3 ttl=64 time=0.056 ms

--- worker01 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.056/0.074/0.110/0.025 ms

 

 

2 firewalld和netfilter

之前的CentOS版本(比如5和6)的防火墙为netfilter

CentOS7的防火墙为firewalld

  • selinux临时关闭 setenforce 0
[root@worker1 ~]# setenforce 0
  • selinux永久关闭 vi /etc/selinux/config
[root@worker1 ~]# vim /etc/selinux/config
修改为:SELINUX=disabled

centos7之前使用netfilter防火墙;centos7开始使用firewalld防火墙;两者都支持iptables规则

先以netfilter防火墙为例,关闭firewalld防火墙

  • 停止firewalld服务
[root@worker1 ~]# systemctl stop firewalld.service
  • 查看firewalld服务状态
[root@worker1 ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Sun 2018-10-21 22:31:45 CST; 6s ago
  Process: 654 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
Main PID: 654 (code=exited, status=0/SUCCESS)

Oct 21 21:05:14 worker1 systemd[1]: Starting firewalld - dynamic firewall daemon...
Oct 21 21:05:20 worker1 systemd[1]: Started firewalld - dynamic firewall daemon.
Oct 21 22:31:44 worker01 systemd[1]: Stopping firewalld - dynamic firewall daemon...
Oct 21 22:31:45 worker01 systemd[1]: Stopped firewalld - dynamic firewall daemon.
  • 关闭firewalld开机启动
[root@worker1 ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
  • 接着安装iptables包
[root@worker1 ~]# yum install -y iptables-services
  • 开启iptables服务
[root@worker1 ~]# systemctl enable iptables
  • 启动iptables服务
[root@worker1 ~]# systemctl status iptables
● iptables.service - IPv4 firewall with iptables
   Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled)
   Active: active (exited) since Sun 2018-10-21 22:34:05 CST; 12s ago
  Process: 7466 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS)
Main PID: 7466 (code=exited, status=0/SUCCESS)

Oct 21 22:34:05 worker01 systemd[1]: Starting IPv4 firewall with iptables...
Oct 21 22:34:05 worker01 iptables.init[7466]: iptables: Applying firewall rules: [ ... ]
Oct 21 22:34:05 worker01 systemd[1]: Started IPv4 firewall with iptables.
Hint: Some lines were ellipsized, use -l to show in full.

 

 

3 netfilter5表5链介绍

netfilter的5个表

filter表主要用于过滤包,是系统预设的表,这个表也是用得最多的表。该表内建3个链:INPUT、OUTPUT以及FORWARD。INPUT链作用于进入本机的包,OUTPUT链作用于本机送出的包,FORWARD链作用于那些跟本机无关的包

nat表主要用于网络地址转换,它也有3个链。PREROUTING链的作用是在包刚刚到达防火墙时改变它的目的地址(如果需要的话),OUTPUT链的作用是改变本地产生的包的目的地址,POSTROUTING链的作用是在包即将离开防火墙时改变其源地址

mangle表主要用于给数据包做标记,然后根据标记去操作相应的包。这个表几乎不怎么用,除非你想成为一个高级网络工程师,否则就不需要太关注。

raw表可以实现不追踪某些数据包,默认系统的数据包都会被追踪,但追踪势必消耗一定的资源,所以可以用raw表来指定某些端口的包不被追踪

security表在CentOS 6中是没有的,它用于强制访问控制(MAC)的网络规则

iptables传输数据包的过程

  • 1 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
  • 2 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
  • 3 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。

 

netfilter的5个链

5个链分别为PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING

  • PREROUTING:数据包进入路由表之前
  • INPUT:通过路由表后目的地为本机
  • FORWARDING:通过路由表后,目的地不为本机
  • OUTPUT:由本机产生,向外转发
  • POSTROUTIONG:发送到网卡接口之前

iptables的规则表和链:

  • 表(tables)提供特定的功能,iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理。
  • 链(chains)是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定 义的默认策略来处理数据包。
  • Iptables采用“表”和“链”的分层结构。在REHL4中是三张表五个链。现在REHL5成了四张表五个链了,不过多出来的那个表用的也不太多,所以基本还是和以前一样。下面罗列一下这四张表和五个链。注意一定要明白这些表和链的关系及作用。

 

 

 

 

4 iptables语法

  • /etc/sysconfig/iptables 规则保存的文件
  • 查看iptables规则:iptables -nvL
[root@worker1 ~]# iptables -nvL
Chain INPUT (policy ACCEPT 322 packets, 25655 bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 77 packets, 6572 bytes)
pkts bytes target     prot opt in     out     source               destination  
  • iptables -F 清空规则
[root@worker1 ~]# iptables -F
  • service iptables save 保存规则
[root@worker1 ~]# service iptables save

iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
  • iptables -t nat //-t指定表,默认是filter表
[root@worker1 ~]# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 8 packets, 955 bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 8 packets, 955 bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 1 packets, 140 bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 1 packets, 140 bytes)
pkts bytes target     prot opt in     out     source               destination 
  • iptables -Z  可以把计数器清零
[root@worker1 ~]# iptables -Z
  • 增加一条规则 iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP   //使用了--dport,--sport,一定要加上-p否则会报错
[root@worker1 ~]# iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP
[root@worker1 ~]# iptables  -nvL
Chain INPUT (policy ACCEPT 29 packets, 2204 bytes)
pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       tcp  --  *      *       192.168.188.1        192.168.188.128      tcp spt:1234 dpt:80

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 18 packets, 2056 bytes)
pkts bytes target     prot opt in     out     source               destination   
  • 设置一条规则  (-I 表示插入 -A表示增加 -D表示删除)iptables -I/-A/-D INPUT -s 1.1.1.1 -j DROP
[root@worker1 ~]# iptables -I INPUT -s 1.1.1.1 -j DROP
[root@worker1 ~]# iptables -A INPUT -s 1.1.1.1 -j DROP
[root@worker1 ~]# iptables -nvL
Chain INPUT (policy ACCEPT 48 packets, 3552 bytes)
pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  --  *      *       1.1.1.1              0.0.0.0/0           
    0     0 DROP       tcp  --  *      *       192.168.188.1        192.168.188.128      tcp spt:1234 dpt:80
    0     0 DROP       all  --  *      *       1.1.1.1              0.0.0.0/0           

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 29 packets, 3756 bytes)
pkts bytes target     prot opt in     out     source               destination  
[root@worker1 ~]# iptables -D INPUT -s 1.1.1.1 -j DROP
[root@worker1 ~]# iptables -nvL
Chain INPUT (policy ACCEPT 6 packets, 428 bytes)
pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       tcp  --  *      *       192.168.188.1        192.168.188.128      tcp spt:1234 dpt:80
    0     0 DROP       all  --  *      *       1.1.1.1              0.0.0.0/0           

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 4 packets, 496 bytes)
pkts bytes target     prot opt in     out     source               destination
  • 指定网卡插入一条规则 iptables -I INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT
[root@worker1 ~]#  iptables -I INPUT -s 192.168.139.0/24 -i eno16777736:0 -j ACCEPT
[root@worker1 ~]# iptables  -nvL
Chain INPUT (policy ACCEPT 13 packets, 958 bytes)
pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  eno16777736:0 *       192.168.139.0/24     0.0.0.0/0           
    0     0 DROP       tcp  --  *      *       192.168.188.1        192.168.188.128      tcp spt:1234 dpt:80

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 6 packets, 1128 bytes)
pkts bytes target     prot opt in     out     source               destination
  • 查看所有设置的规则 iptables -nvL --line-numbers
[root@worker1 ~]# iptables -nvL --line-numbers
Chain INPUT (policy ACCEPT 135 packets, 9884 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     all  --  eno16777736:0 *       192.168.139.0/24     0.0.0.0/0           
2        0     0 DROP       tcp  --  *      *       192.168.188.1        192.168.188.128      tcp spt:1234 dpt:80

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 69 packets, 7888 bytes)
num   pkts bytes target     prot opt in     out     source               destination
  • 删除规则iptables -D INPUT 1
[root@worker1 ~]# iptables -D INPUT 1
[root@worker1 ~]# iptables -nvL --line-numbers
Chain INPUT (policy ACCEPT 22 packets, 1510 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 DROP       tcp  --  *      *       192.168.188.1        192.168.188.128      tcp spt:1234 dpt:80

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 12 packets, 1440 bytes)
num   pkts bytes target     prot opt in     out     source               destination
  • 预设策略,就是没有设置规则的时候,默认设定预设策略(ACCEPT,DROP,REJECT),iptables -P INPUT DROP  //不要在远程设定规则,否则会断开,无法连接上
[root@worker1 ~]# iptables -P INPUT DROP
  • 恢复预设策略 iptables -P INPUT ACCEPT
[root@worker1 ~]# iptables -P INPUT ACCEPT

 

 

扩展(selinux了解)
1. selinux教程 http://os.51cto.com/art/201209/355490.htm
2.selinux pdf电子书 http://pan.baidu.com/s/1jGGdExK

 

 

Spark与Hadoop的关系和区别 Hadoop是一个由Apache基金会维护的开源分布式数据处理框架。Hadoop分布式文件系统(HDFS):用于存储大规模数据的分布式文件系统。Hadoop MapReduce:用于分布式数据处理的编程模型和框架。Hadoop最初是为批处理任务设计的,适用于对大规模数据进行批处理分析。Spark与Hadoop都是强大的大数据处理框架,它们在大数据领域扮演着不同但重要的角色。了解它们之间的关系和区别以及适用场景对于在项目中做出正确的决策至关重要。 阅读详情

相关推荐

了解传统数据与大数据

了解传统数据与大数据 传统数据与大数据相比 数据量 传统数据gb-tb 大数据tb-pb以上 增长速度 传统数据数据量稳定 增长缓慢 大数据 持续实时生产数据 多样化 传统数据主要为结构化数据 大数据 半结构化,非结构化,多维数据 价值 传统数据 统计和报表 大数据 数据挖掘预测分析 大数据服务器安装规范 系统硬盘 两个硬盘做一个raid1 引导分区:200M 交换分区:可以不设置或设置的很小,在使用大数据时需要将其关闭 根分区:/ 数据硬盘 多个硬盘,每个硬盘独立挂载,有多少个硬盘挂载多少个目录 数据硬

wangxiansheng322的博客 3813

Hadoop选型指南:从原理到实践,判断何时该用与不该用

分布式存储与计算框架是处理海量数据的核心技术,其原理是将数据分块存储在多台普通机器上,并通过并行计算模型实现向外扩展。这种架构的技术价值在于突破单机内存与磁盘瓶颈,以线性扩展能力应对TB级以上数据的离线批处理需求。典型应用场景包括日志分析、批量统计等对延迟不敏感的作业。然而,当数据量低于100GB、任务需要低延迟响应或频繁更新时,分布式方案反而会因协调开销导致效率下降。理解数据量级、任务并行性、延迟容忍度与团队运维能力这四个维度,是判断是否引入Hadoop生态的关键依据。

weixin_29038537的博客 283

MapReduce vs Spark:大数据处理框架对比

随着互联网数据量从“GB级”跃升至“ZB级”,传统单机计算已无法满足需求。分布式计算框架应运而生,其中MapReduce(2004年由Google提出)和Spark(2010年由UC Berkeley AMPLab开发)是最具代表性的两大框架。本文将从原理、性能、编程模型、适用场景等维度展开对比,覆盖离线批处理、实时计算、机器学习等典型场景。本文将按照“概念引入→原理对比→代码实战→场景分析”的逻辑展开,通过生活案例降低理解门槛,结合代码示例展示具体实现差异,最终总结选型建议。flatMap。

操作系统内核探秘的博客 855

几种数据处理框架的场景比较:传统ETL工具、Mapreduce、Hive、Spark

ref: http://www.sohu.com/a/155141436_151779提起“大数据”就不得不提起有关数据的处理,虽然有人说过大数据在数据质量方面的要求不比传统数据的要求那么严格,当然这也是分场景的断言,但是无论何时数据处理在大数据的生态中始终处于不可缺少的地位,因为数据处理的时效性行,准确性直接影响数据的分析与挖掘,分析的最终结果影响业务的营销与收入。一般而言,数据处理包括前期数据...

wyn885的专栏 4075

分布式计算框架比较:MapReduce vs Spark vs Flink

处理模式:批处理(Batch,处理静态数据) vs 流处理(Stream,处理动态数据);计算类型:迭代计算(Iterative,如机器学习梯度下降) vs 非迭代计算(如日志统计);延迟要求:高延迟(小时/天级,如离线ETL) vs 低延迟(毫秒/秒级,如实时监控)。MapReduce:专注批处理+非迭代计算,适合高延迟、大吞吐量的离线任务;Spark:专注批处理+迭代计算,兼顾交互式查询,适合需要快速迭代的场景;Flink:专注流处理+低延迟,支持批处理(流的特例),适合实时数据处理。

2501_92132293的博客 1086

第七章 MapReduce详解

MapReduce是一种并行编程模型,用于大规模数据集(大于1TB)的并行计算,它将复杂的、运行于大规模集群上的并行计算过程高度抽象为两个函数:Map和Reduce。 MapReduce是单输入、两阶段、粗粒度数据并行、分布式计算框架。 适合用MapReduce来处理的数据集要满足一个前提条件:待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。 MapReduce实现离线批处理 Impala实现实时交互查询分析 Storm实现流式数据实时分析 Spark实现迭代

wyz191的专栏 6387

一文带你了解Hive【详细介绍】Hive与传统数据库有什么区别?

1 什么是Hive? 首先给大家介绍一下什么是Hive。 Hive是Facebook为了解决海量数据的统计分析,而开发的基于Hadoop的一个数据分析工具(也就证明了Hive没有存储数据的能力,它只有使用数据的能力),而且是将结构化的数据文件映射为一张数据库表(结构化是它对于存储在HDFS上的数据的一个要求,其他的文件是不能映射为Hive表),而且它提供的是类SQL查询功能,所以在数据使用的时候给我们提供了很大的方便。 所以HQL其实就是Hive缩写为H,Query缩写为Q,Language缩写为L。 由

w0714的博客 6万+

必学!大数据MapReduce与其他框架的对比分析

在数据爆炸的时代,高效处理海量数据已成为企业和开发者的必备技能。MapReduce作为大数据处理的开创性框架,彻底改变了我们处理大规模数据集的方式。本文将带领读者深入探索MapReduce的核心原理、工作机制及其与现代大数据框架(如Spark、Flink、Hive等)的详细对比。通过生动的比喻、直观的图表和实用的代码示例,我们将剖析各种框架的优缺点、适用场景及性能特性,帮助读者在实际项目中做出明智的技术选型。

AI开发架构师 963

Hive和HBase有哪些区别与联系及适用场景???

首先还要从两者的概念入手。Hive是运行在Hadoop上的一个工具,准确地讲是一个搜索工具。当对海量数据进行搜索时,Hadoop的计算引擎是MapReduce。但是对MapReduce的操作和编程是非常复杂的。于是Hive的存在就让复杂的编程过程简化成了用SQL语言对海量数据的操作。这大大减轻了程序员的工作量。可以说,Hive的存在让海量数据的增删改查更加方便。其实从Hive的logo就可以看出H...

lrf2454224026的博客 696

Dataset - DeepFashion 服装数据集

Dataset - DeepFashion 服装数据集 [Dataset - DeepFashion] [Project - DeepFashion] 1. 服装类别和属性预测集 [Category - Attribute 下载] [百度网盘] 289,222 张服装图片 clothes images; 50 个服装类别 clothing categories 1,000 ...

长风破浪会有时,直挂云帆济沧海 2万+

Clawdbot完 整安装与使⽤指南(保姆级教程)

Clawdbot 是⼀款开源个⼈ AI 智能体(Personal AI Agent),核⼼优势为本地部署+系统级执⾏+全渠道交互,可通过聊天⼯具(Telegram/WhatsApp 等)下达指令,⾃动完成⽂件整理、代码部署、⽇程同步等任务,所有数据本地存储,隐私零泄露。截⾄2026年 1 ⽉,GitHub 星标突破 4 万+,⽀持 Windows/Mac/Linux/云服务器多平台。

A1609926242的博客 1607

数据仓库(2)数仓、大数据与传统数据库的区别

数据仓库与大数据区别,数据仓库与数据库的区别,大数据与传统数据库的区别

编程代码,数据学习开发的日常总结。欢迎关注VX公众号:张飞的猪 5254

A股量化实战:用Python回测动量因子策略(附聚宽完整代码)

本文详细介绍了如何在A股市场使用Python和聚宽平台,实战回测一个动量因子量化交易策略。从环境搭建、数据获取到完整的策略代码实现与回测分析,手把手教你验证“强者恒强”的投资逻辑,并提供参数优化与实战避坑指南,助力量化新手迈出第一步。

weixin_29264201的博客 969

大数据技术原理与应用 第三篇 大数据处理与分析 (一) MapReduce

大数据技术原理与应用 第三篇 大数据处理与分析 MapReduce 知识点总结与理解

CNDefoliation的博客 1914

嵌入式NTC温度解算库:Steinhart-Hart定点实现与硬件解耦设计

NTC热敏电阻是嵌入式系统中最常用的模拟温度传感器,其阻值-温度关系高度非线性,需依赖Steinhart-Hart方程实现高精度转换。该方程通过三参数对数多项式建模,理论上可将误差控制在±0.1°C以内,但直接移植到MCU面临浮点开销大、定点溢出、系数精度损失等工程瓶颈。为此,归一化处理(ln(R/R₂₅))、Q24.8定点运算、查表+插值对数计算等优化技术成为资源受限场景下的关键技术路径。其核心价值在于将ADC采样与温度解算彻底解耦,适配各类HAL/裸机/RTOS环境,广泛应用于电池管理、工业PLC、Io

weixin_35756624的博客 647

个人量化系统的策略集合与赚钱之道:全栈深度解析 + 与主流开源框架对比

前三篇把系统的"骨架"拆完了——架构、工程化、部署。本篇回答最关键的问题:一句话:别人的系统是"程序员的系统"(写代码才能加策略),daily_stock_analysis 是"股民的 YAML"(写中文就能加策略)。这个差异决定了它能在多大程度上真的帮你赚钱。如果你用过 、、,加一个策略的流程是: 问题在哪?在 daily_stock_analysis 里,“策略” = 一个文件。每个 YAML 是一个自然语言描述的交易策略,包括: 看到没? ——整个策略就是一段中文,零代码。任何会写字的人都能加新策略

shiter编写程序的艺术 151

MPI在Deep Learning的主流时代背景下除了传统计算领域外对DL的应用前景如何,MPI与NCCL的区别在哪

MPI在Deep Learning的主流时代背景下除了传统计算领域外对DL的应用前景如何,MPI与NCCL的区别在哪??? 做分布式计算的基本上10年之前只听说过MPI,14年之前只听过hadoop的MapReduce,17年之前只听过TensorFlow。 那么这三个分布式计算软件或者说框架有什么区别呢???现在都是搞deep learning的为主,也就是Tensorflow和Pytorch的,那么之前的MPI,Mapreduce还有发展前景吗??? 这里首先说明下,本文中所说的TensorFlow,P

qq_33934427的博客 1346

GLM-4本地部署的实战教程

本文主要介绍了GLM-4-9B本地部署的实战教程,希望对学习和使用大模型的同学们有所帮助。 文章目录 1. 前言 2. 配置环境 2.1 安装虚拟环境 2.2 安装依赖库 2.3 下载模型文件 3. 运行glm-4-9b-chat

herosunly的博客 25万+

MapReduce和HPC集群并行计算优劣对比

2011年08月23日00:05 来源:mdyang的技术博客 作者:mdyang 编辑:胡铭娅 评论:0条   【IT168技术】现在MapReduce/Hadoop以及相关的数据处理技术非常热,因此我想在这里将MapReduce的优势汇总一下,将MapReduce与传统基于HPC集群的并行计算模型做一个简要比较,也算是对前一阵子所学的MapReduce知识做一个总结和梳理。  随着互联网数据量

a936676463的专栏 2917

GPFS扩展技术原理(十一)-FMDN广播与EID加解密

GFPS扩展技术原理(十一)FMDN广播及EID加解密

十多年蓝牙协议软件开发,擅长蓝牙协议分析 935

IEC 61850标准协议解读 3.MMS服务

摘要:本文系统介绍了MMS(制造报文规范)的基础知识及其在IEC61850中的应用。首先解析MMS的核心定义、通信流程(带确认/不带确认服务)、虚拟制造设备(VMD)概念及核心对象(域/有名变量等)。重点阐述IEC61850与MMS的映射关系,包括对象分层映射、服务转换规则及数据类型对应。深入分析ASN.1编解码机制,说明MMS PDU的分层结构与解码流程。最后通过典型报文案例(报告服务、控制服务、文件传输等)和通信初始化流程,展示MMS在智能变电站中的实际应用。全文揭示了MMS作为抽象应用层协议如何通过标

张二狗的博客 724

MapReduce概述

MapReduce概述 分布式并行编程 数据处理能力提升的两条路线 单核CPU到双核到四核到八核 分布式并行编程:不是把程序在一台单机上运行,借助一个集群通过多台机器同时并行处理大规模数据集 分布式并行编程是多台计算机同时在运行相关的程序 分布式与集群是什么?区别是什么? MapReduce和传统的并行编程框架 集群的架构和容错性 硬件价格及扩展性 编程和学...

teletubbies的博客 5100

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Hive,SQL,MapReduce,Hadoop,Spark等这些关系及理解

由于数据量巨大,单机无法存储,所以我们需要将用很多台机器存储数据,HDFS(Hadoop Distributed FileSystem)就应用而生,它是专门负责管理这么多台单机之间的数据,你存取数据都是和单机一样的操作流程,但实际上这些数据都是在多台单机上存储的,相当于HDFS是一个帮你管理大数据的界面,你不用管它后面是怎么的关系,只需要在它这儿操作就可以了。光有数据也不行啊,数据我们是要...

youhuakongzhi的博客 8132

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: linux学习lesson32
下一篇: linux学习lesson34
InfiniteIdea_Go
博客等级 码龄8年 3粉丝 77原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值