欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hadoop Notes I

程序员文章站 2022-07-12 17:13:09
...

hadoop

分布式计算框架。
[内置模块]
1.common
2.hdfs
    分布式存储。
    Namenode
    DataNode
    secondaryNamenode
3.mapreduce
4.yarn
    ResourceManager
    Nodemanager

hadoop部署模式

local(standalone)   //本地模式
pesudo              //伪分布(1)
full                //完全分布(n)

128M

磁盘速率.
寻道时间 :10ms。(机械硬盘不是固态)
往往寻道时间占用读取文件的时间的百分之一 也就是一秒
磁盘速度大概是每秒百兆左右
128M.

虚拟机

20.
链接克隆。

centos命令

ifconfig
    ping 
    nano

    file x.txt                  //查看文件类型
    uname -a                    //查看系统信息。
    tar -cf a.tar 1.txt 2.txt   //将1,2文件归档成tar
    tar -xzvf a.tar -C out      //z指定压缩,

    gzip                        //原地压缩解压
    gzip 1.txt  2.txt           //压缩
    gzip -d 1.txt   2.txt       //解压

    df                          //
    df -h


    cd -P .                     //进入物理目录
    pwd                         //当前目录
    whoami                      //当前用户
    which which                 //

    basename /a/b/c/d           //d
    basename /a/b/c/d/          //d
    dirname /a/b/c              // /a/b

环境变量

    echo $PATH                 //ok
    echo ${PATH}XXX                //ok
    echo "$PATH"XXX                //ok
    echo '$PATH'XXX                //原样输出

脚本中for循环

//语法.
    for x in 1 2 3 4; do echo $x ; done

    [9.sh]
    #!/bin/bash
    for (( i=0 ; i<9 ; i=$i+1 )) ; do
      echo $i
    done

while循环

#!/bin/bash
    #99表格
    i=1
    while (( i<=9 )) ;  do
      j=1
      while (( j<=$i )) ; do
        echo -ne ${j}x${i}=$(( j*i ))'\t'
        j=$(( j+1 ));
      done
      i=$(( i+1 ))
      echo
    done

vmware网络连通方式

1.bridge
    桥接,经过物理网卡。client等价于一台真实物理机.

2.NAT
    net address tranform,网络地址转换.
    通过虚拟网卡,v8.
    host没有网络,client和host之间仍然可以通信。
    client可以访问internet/局域网。
    局域网的其他主机无法client.

3.only-host
    和NAT相似,client无法外网。
    更加安全。

配置网络文件

//配置ip dns
    [/etc/sysconfig/network-scripts/ifcfg-enthxxx]

    //hostname
    [/etc/hostname]

    //hosts
    [/etc/hosts]

    //resolv.conf
    配置dns名称服务器。

sed

流方式的字处理程序。不需要打开文件,直接修改。
sed '1p' x.txt

    //打印第一行
    sed -n '1p' 1.txt       //首行
    sed -n '$p' 1.txt      //最后一行
    sed -n '1,$p' 1.txt        //全部行
    sed -n '/tom3/p' 1.txt  //显式包含tom3的行

    //删除第一行,直接修改源文件
    sed -i '1d' 1.txt

    //追加行
    sed -i '1ahow you' 1.txt    //在第一行之后追加一行
    sed -i '1,3ahow you' 1.txt  //在第一行之后追加一行
    sed -i '1,3a how you' 1.txt         //不好使
    sed -i '1,3a\     how you' 1.txt    //空格开头需要\转义

    //插入,在指定行之前插入,
    sed -i '1,3i\     how you' 1.txt    //

    //覆盖,整行覆盖。
    sed -i '1,2chow' 1.txt              //将1,2行整体替换成how


    //使用dest替换src,按照单词替换
    sed -i 's/src/dest/g' 1.txt
    sed -i 's/hello/how/g' 1.txt

    kill -9 2313423

awk

    awk '{print $1}' 1.txt             //打印文件的第一列,使用空格分割每行
    awk -F ',' '{print $1}' 1.txt      //指定分隔符
    awk -F ',' 'BEGIN {print "start"} {print $1} END {print "end"}' 1.txt          //输出页眉页脚

    //动态提取ip
    $>ifconfig | grep inet | head -1 | awk '{print $2}'

访问linux命令执行结果

    echo $?            //0:成功 非0:失败.
    a && b          //a和b都需要成功执行。
    a || b          //a成功,b不执行,a失败,b执行。
    a ; b           //a先执行,再执行b,没有逻辑关系,切换目录
    (a ; b)         //不切换目录

$的应用

    s?          //上次命令执行结果
    $#         //访问所有参数
    $1         //第几个参数
    $o         //脚本名称
    [email protected]         //参数个数
    shift       //漂移.移动

netcat(linux)

    [服务器]
    nc -lk 8888         //启动服务器,k:多个连接 l:监听


    [client]
    nc localhost 8888   //通信


    //传输文件
    nc -l 8888 >> a.txt         //重定向输出
    nc localhost 8888 < k.txt   //重定向输入

netcat(windows)

    nc -l -L -p 8888            //监听-L:多个监听 -p:端口
    nc localhost 8888           //客户端了连接

使用命令读取网络设备名称

nmcli d
/etc/sysconfig/network-scripts/ifcfg-ethxxxx
ens33

编写修改机器脚本

[/usr/local/bin/xmachine.sh 101]
#!/bin/bash
    #ifcfg-xxx
    cd /etc/sysconfig/network-scripts
    cp ifcfg-eno16777736 ifcfg-eno16777736.bak2
    mv ifcfg-eno16777736 ifcfg-eno16777736.bak
    dev=`nmcli d | sed -n '2p' | awk '{print $1}'`
    sed -i 's/eno16777736/'${dev}'/g' ifcfg-eno16777736.bak
    sed -i 's/206/'$1'/g' ifcfg-eno16777736.bak
    mv ifcfg-eno16777736.bak ifcfg-${dev}
    #hostname
    echo s$1 > /etc/hostname

/usr/local/bin/hosts

s100
s101
s102
s103
s104

/usr/local/bin/xcall.sh

#!/bin/bash
params=[email protected]
hosts=`cat /usr/local/bin/hosts`
for  h in ${hosts} ; do
    tput setaf 2
    echo ============= $h =============
    tput setaf 7
    ssh -4 $h "source /etc/profile;$params"
done

/usr/local/bin/xsync.sh

#!/bin/bash
dest=$1
file=`basename $dest`
echo file=${file}

dir=`dirname $dest`
echo dir=${dir}

cd -P ${dir}
ppath=`pwd`
echo ppath=${ppath}

xpath=${ppath}/${file}
echo xpath=${xpath}

user=`whoami`
echo user=${user}

hosts=`cat /usr/local/bin/hosts | sed -n '2,$p'`
for h in ${hosts} ; do
  echo  $xpath ${user}@${h}:${ppath}
done

ssh无密登录

1.生成100公私秘钥对
    $>ssh-****** -t rsa -P '' -f ~/.ssh/id_rsa
2.s100将公钥添加authorized_keys文件
    $>cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys

3.s100修改authorized_keys权限
    $>chmod 644 ~/.ssh/authorized_keys

4.xcall.sh创建.ssh目录

配置hadoop的完全分布式

1.配置文件
[core-site.xml]
<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://s100:8020</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/home/centos/hadoop/full</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>3</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file://${hadoop.tmp.dir}/dfs/name1,file://${hadoop.tmp.dir}/dfs/name2</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file://${hadoop.tmp.dir}/dfs/data1,file://${hadoop.tmp.dir}/dfs/data2</value>
        </property>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>s104:50090</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>


[yarn-site.xml]
<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>s100</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

[slaves]
s101
s102
s103

2.分发/etc/hosts文件和full配置目录
    $>cd /soft/hadoop/etc
    $>xsync full

    $>sudo xsync /etc/hosts
    127.0.0.1 localhost
    192.168.231.100 s100
    192.168.231.101 s101
    192.168.231.102 s102
    192.168.231.103 s103
    192.168.231.104 s104

3.清除logs和本地目录
    $>xcall.sh "rm -rf /soft/hadoo/logs/*"

4.格式化文件系统
    $>hadoop namenode -format

5.查看进程
    $>xcall.sh jps

6.webui 

修改windows的dns配置