Hadoop知识点(二)-Hadoop伪分布式安装

1.安装前准备工作

1.1JDK安装

详见前面的文章:https://blog.csdn.net/qq_38633279/article/details/105802279

1.2.SSH免密登录

rm -rf.ssh
ssh-keygen  #然后一路回车

cd .ssh
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
ssh data date  #输入yes

ssh data date  #这个是不用输入密码直接获取时间,验证可以

2.HDFS的安装

2.1上传文件

stp
mv hadoop-2.6.0-cdh5.16.2.tar.gz /home/hadoop/software/
su -hadoop
cd /home/hadoop/software/
ll

2.2HDFS环境配置

useradd hadoop   #创建用户
su - hadoop      #登录hadoop用户
which java       #检查java环境
mkdir tmp sourcecode software shell log lib  data app #创建目录
cd software/
tar -xzvf hadoop-2.6.0-cdh5.16.2.tar.gz -C ../app/  #解压
cd
ll
cd app
ll
ln -s hadoop-2.6.0-cdh5.16.2 hadoop   #建立软连接
#软连接的文件夹权限是777

cd hadoop/etc/hadoop
vi hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_221   #这个是修改,不是新增,一定记得
--------------------------------------------------
cd
vi .bashrc
export HADOOP_HOME=/home/hadoop/app/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

source .bashrc
========================
cd /home/hadoop/app/hadoop/etc/hadoop  #这个是绝对路径

2.3HDFS文件配置

1>
cd /home/hadoop/app/hadoop/etc/hadoop  #这个是绝对路径
vi slaves
data
----------------------
2>
vi core-site.xml  #nn启动以data名称启动

etc/hadoop/core-site.xml
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://data:9000</value>
    </property>

    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/tmp/</value>
    </property>
</configuration>
3>
vi hdfs-site.xml  #snn启动以data名称启动  etc/hadoop/hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>data:9868</value>
    </property>

    <property>
        <name>dfs.namenode.secondary.https-address</name>
        <value>data:9869</value>
    </property>
</configuration>

2.4HDFS格式化(仅限第一次)

cd ../../      #退回到app下面的hadoop,如下:/home/hadoop/app/hadoop
bin/hdfs namenode -format  #格式化

2.5启动nn snn

sbin/start-dfs.sh #启动   是在/home/hadoop/app/hadoop这个目录下相当于 cd app/hadoop
jps  #查看进程

DataNode dn #负责存储数据 
NameNode nn #负责分配数据存储的  是老大
SecondaryNameNode  #万年老二,默认按1H去备份老大的数据

通过pid找端口号
netstat -nlp | grep pid   #pid是NameNode的pid

然后在电脑网页上输入:公网IP:50070

**即说明hadoop的HDFS已经安装成功**

2.6.HDFS的使用

2.6.1创建用户

bin/hdfs dfs -mkdir /user #创建文件
bin/hdfs dfs -ls / #查看
bin/hdfs dfs -mkdir /user/hadoop #创建用户名

2.6.2创建文件夹

bin/hdfs dfs -mkdir /wordcout
bin/hdfs dfs -mkdir /wordcout/input/

2.6.3将linux中文件上传到hadoop (-put)

bin/hdfs dfs -put linux中文件名称 HDFS放置路径
bin/hdfs dfs -put etc/hadoop/*.xml /wordcout/input/

=============================
在Web界面–>Utilitied–>Browse the file system #这里就可以查看文件是否上传

2.6.4计算

bin/hadoop jar
share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.16.2.jar
grep /wordcout/input /wordcout/output ‘dfs[a-z.]+’

2.6.5 将hadoop文件下载到linux(-get)

bin/hdfs dfs -get hadoop文件路径 linux文件路径
bin/hdfs dfs -get /wordcout/output output

2.6.6在linux查看

cat output/
cat part-r-00000

3.yarn的安装

yarn包含ResourceManager和NodeManager

3.1yarn环境配置

cd app/hadoop/etc/hadoop
mv mapred-site.xml.template mapred-site.xml
1>
vi mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
----------------------------
2>
vi yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>data:18088</value>
    </property>
</configuration>

3.2yarn启动进程

cd ../../
sbin/start-yarn.sh   #启动YARN

3.3查看进程

jps  #查看进程
ResourceMangage
NodeManage
netstat -nlp | grep ResourceManage的pid
--------------------------
web界面
http://外网IP:18088   #说明yarn配置成功

3.4yarn应用案例(词频统计)

3.4.1创建数据

cd
cd data
rm -rf *
vi 1.log
vi 2.log

3.4.2创建文件夹

cd app/hadoop

hdfs dfs -mkdir /wordcount
hdfs dfs -mkdir /wordcount/input
hdfs dfs -mkdir /wordcount/input

3.4.3将linux数据上传到yarn

hdfs dfs -put * /wordcount/input/
hdfs dfs -ls /wordcount/input/ #查看文件是否已经传送到hadoop

3.4.4查找案例jar包

cd
cd /app/hadoop
find ./ -name ‘example’ # ./表示当前路径

hadoop jar
./share/hadoop/mapreduce2/hadoop-mapreduce-examples-2.6.0-cdh5.16.2.jar
wordcount /wordcount/input wordcount/output #wordcount/output这个是不存在的,否则报错

刷新web界面

3.4.5将yarn数据下载到linux

hdfs dfs -ls wordcount/output
hdfs dfs -get wordcount/output/part-r-00000 #这个后面没有添加下载的路径,则默认现在到当前路径
cat hdfs part-r-00000

以上是hadoop伪分布的安装方式

4.其他

当出现进程信息出现:-- process information unavaiable
使用jps,不能代表进程存在或者不存在,特别是使用jps检测状态,相当眼见不一定为真
解决方法
ps -ef | grep PID(进程) #查看进程是否真的有问题,
1.这个进程是否有问题,

文件被删除,不影响进程的重启
sbin/stop-all.sh

pid文件
1.pid默认存储位置
默认存储子/tmp
.pid文件存储的内容是维护进程的PID,相当于写死了PID
kill -0 PID #首先读取.pid文件的pid,然后再杀死进程

2.pid文件被删除,会影响进程的重启
进程的启动,是pid文件写入进程pid的数字
进程的关闭,是pid文件读取pid数字,然后kill -9 pid #其中pid里面是数字

linux的/tmp/文件会有30天的默认删除机制
总结
pid文件生产不要丢在/tmp目录中
因为这个是影响进程的启动停止

如何修改pid存储目录
在配置当中
cd /usr/local/hadoop/etc/hadoop/ #这里可以查看绝对路径

vi hadoop-env.sh
export HADOOP_PID_DIR=XXX #这个需要强行修改
这个存放在位置上面,然后进入到这个目录下面,然后ll查看一下里面都有哪些pid文件

===============
5.块
HDFS存储大文件利好,存储小文件是损害自己的,
适合存储大文件,不适合小文件,不代表不能存储小文件

文件总共大小为260M
上传到hdfs,将文件切分成块,dfs.blocksize xxx=128M
128M
128M
4M


副本数:

伪分布阶段 1阶段 副本数 dfs.replication 1
生产上HDFS集群的机器数量>=3 ,但是副本数dfs.replication=3设置为3,一般情况就够用了,没有必要设置多个。

通过设置副本数,来让文件存储在大数据HDFS平台上有容错保障

存储副本数=3 存储时间大小=文件大小3=2603=780M存储空间

5个块的元数据信息存储比3个块的元数据信息存储维护多,这个有namenode(处理块)维护块的信息,尽量减少块的分隔。

所以nn是不喜欢小文件

1亿个10kb文件 3亿个block

1亿个10kb文件压缩成1kw个文件100M 3kw个block


如何规避小文件
1.数据传输到hdfs之前,就合并
2.数据已经在hdfs上,就定时去合并不常用的文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值