hadoop大数据平台

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
[1]  Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。 [2]

adoop的集群主要由 NameNode,DataNode,Secondary NameNode,JobTracker,TaskTracker组成.如下图所示:

 

 

   NameNode中记录了文件是如何被拆分成block以及这些block都存储到了那些DateNode节点.NameNode同时保存了文件系统运 行的状态信息. DataNode中存储的是被拆分的blocks.Secondary NameNode帮助NameNode收集文件系统运行的状态信息.JobTracker当有任务提交到Hadoop集群的时候负责Job的运行,负责调 度多个TaskTracker.TaskTracker负责某一个map或者reduce任务.

####hadoop大数据平台单点服务
首先要有干净的虚拟机,给这个虚拟机的memy为2G
###首先要有两个软件包get  hadoop-2.7.3.tar.gz    jdk-7u79-linux-x64.tar.gz
useradd  -u  800  hadoop
passwd  hadoop  ##给用户一个密码
mv  *  /home/hadoop/   ##把软件包都放在用户的加目录下
su  -  hadoop


ls   ##有两个软件包
tar  zxf  jdk-7u79-linux-x64.tar.gz
ln  -s   jdk1.7.0_79/  java   #做个软连接
cd  java/bin/   ##此时的位置为/home/hadoop/java/bin


cd
vim   .bash_profile  #添加环境变量
PATH=$PATH:$HOME/bin:/home/hadoop/java/bin


source  .bash_profile
jps  ###产看jps的进程此时只有一个
tar  zxf   hadoop-2.7.3.tar.gz
cd   hadoop-2.7.3/etc/hadoop/
vim   hadoop-env.sh
###将环境变量打开 export JAVA_HOME=/home/hadoop/java


cd   
cd  hadoop-2.7.3
bin/hadoop    ##产看用法
mkdir  input
cp  etc/hadoop/*.xml  input/


bin/hadoop  jar  share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar
bin/hadoop  jar  share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar   grep input  output 'dfs[a-z.]+'


cd  output/
ls
cat  *
cd  ..
cd input/
du  -sh  ##产看多大


cd ..
cd etc/hadoop
vim  core-site.xml
###在《configuration》中加
   <property>
        <name>fs.defaultFS</name>
        <value>hdfs://172.25.17.1:9000</value>
    </property>


vim  hdf-site.xml
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>


ssh-keygen ##直接回车


ssh-copy-id  172.25.17.1  ##复制一个钥匙,在/home/hadoop/.ssh下生成.ssh/authorized_keys这个文件
cd
cd .ssh
ls   ###.ssh/authorized_keys其实就是copy id_rsa.pub 只是名字不同而已,内容没什么不同
diff  authorized_keys  id_rsa.pub


ssh  172.25.17.1
ssh  localhost
ssh  server1   ##一定要做解析,每次进去之后要记得退出
ssh  0.0.0.0
cd
cd  hadoop-2.7.3/etc/hadoop
vim  salves
172.25.17.1


cd  ..
cd ..
bin/hdfs  namenode  -format


sbin/start-dfs.sh  ##不会报错   


jps   ##看java服务开了那些


###进入浏览器
http://172.25.17.1:50070


bin/hdfs  dfs  -ls   ##并不会显示任何目录,所以下面的步骤就是为了给他做一个目录
bin/hdfs dfs  -mkdir  /user
bin/hdfs dfs  -mkdir  /user/hadoop


进入浏览器,点击utilitics:选择文件系统,可以看见显示hadoop了


bin/hdfs  dfs  -ls
bin/hdfs  dfs  -put   input/
进入浏览器,点击utilitics:选择文件系统,可以看见显示input了


bin/hadoop  jar  share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep  input output  'dfs[a-z.]+'
进入浏览器,点击utilitics:选择文件系统,可以看见多了两个目录


bin/hdfs  dfs  -ls
bin/hdfs dfs  -cat  output/*
bin/hdfs  dfs  -get output
cd  output
cat  *
jps   ##看开起来的java进程


##并行服务,需要在开2台干净的虚拟机,memy分别给1G
cd  hadoop-2.7.3
sbin/stop-dfs.sh


cd  etc/hadoop
vim   hdfs-site.xml  ##将数字1改为2,因为有两个存储设备


vim  slaves
172.25.17.2
172.25.17.3


jps   ##因为服务是停掉的,所以就没有java进程
cd   /tmp
rm  -fr  *   ##删除所有数据,保证数据的一致性
yum  install   -y  nfs-utils   #需要在root用户下载
/etc/init.d/rpcbind  start
vim  /etc/exports
/home/hadoop  *(rw,anonuid=800,anongid=800)


/etc/init.d/nfs  start   
showmount  -e     ##发现共享设备
##在新开启虚拟机中做,也就是server2  和server3中做
yum  install   -y   nfs-utils
/etc/init.d/rpcbind  start
netstat  -antlupe  #端口号为111


useradd  -u 800  hadoop
showmount  -e  172.25.17.1  #看能不能发现设备


mount  172.25.17.1:/home/hadoop  /home/hadoop/


su  - hadoop
####在server1里面做
ssh   server2  
ssh  server3   ##应该可以免密,因为我们用了nfs文件系统,他可以同步链接点的文件,记得在hadoop用户下免密
cd   hadoop-2.7.3
bin/hdfs  namenode  -format
sbin/start-dfs.sh  ##开启服务


jps   ##看有那些进程
cd  /tmp
ls   ##有文件

##在erver2  和server3中做
jps  ##他也应该开启了服务
cd  /tmp
ls   ##有文件显示
###进入浏览器,点击节点,观察节点server2和server3有没有加进去


###在server1里面做
cd  hadoop-2.7.3
bin/hdfs  dfs  -mkdir    /user
bin/hdfs  dfs  -mkdir    /user/hadoop
bin/hdfs  dfs  -put   etc/hadoop/  input
bin/hadoop  jar  share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar  wordcount  input  output
ls  ##显示有没有output这个文件,如果有,删除  rm  -fr  output
bin/hdfs  dfs  -get  output


####做分布式存储的高可用
需要新开起的虚拟机server4,内存分分给2G
###在server4里面做
yum  install   -y  nfs-utils
/etc/init.d/rpcbind  start
useradd  -u 800 hadoop
mount   172.25.17.1:/home/hadoop  /home/hadoop
su  -  hadoop
ls    ##应该有文件,因为将server1的文件挂在了本地
cd  hadoop-2.7.3/etc/hadoop/
vim  slaves
##加入172.25.17.4
cd  ..
cd ..
sbin/hadoop-daemon.sh  start  datanode
jps   ##看自己开启的服务有没有在进程里面


##去浏览器里面看节点server4有没有加进去


###在server1里面
ssh   server4   ##应该免密
dd  if=/dev/zero  of=bigfile  bs=1M  count=500
bin/hdfs  dfs  -put bigfile
##进入浏览器里面看
发现有bigfile这个文件


###在server4里面做
cd
ln -s  hadoop-2.7.3  hadoop
cd  /hadoop-2.7.3/etc/hadoop
vim   hdfs-site.xml
在<configuration>里面加入
<property>
<name>dfs.hosts.exclude</name>
<value>/home/hadoop/hadoop/etc/hadoop/exclude-hosts</value>
</property>


vim  /home/hadoop/hadoop/etc/hadoop/exclude-hosts
172.25.17.4   ##
vim   slaves
##删除server4
####在server1里做
cd  /hadoop-2.7.3
bin/hdfs  dfsadmin  -refreshNodes ##刷新节点
bin/hdfs  dfsadmin  -report


jps   ##有进呈显示
cd  hadoop/etc/hadoop/
cp   mapred-site.xml.template  mapred-site.xml
vim  mapred-site.xml
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>


vim  yarn-site.xml
  <property>
        <name>yarn.nodemanager.aux-service</name>
        <value>mapreduce_shuffle</value>
    </property>


jps    ##看看进程在美在
cd  
cd hadoop
sbin/start-yarn.sh
jps   ##x显示有没有多加一个进程,resourceManager


####在server2和server3俩面看,新的进程有没有加进去
jps   ##加进来的进程叫做nodemanager,resourcemanager进程会调用nodemanager,

 

 


###在开一个虚拟机server5,要求环境干净
yum  install  -y   nfs-utils
/etc/init.d/rpcbind  start
useradd  -u  800 hadoop
mount  172.25.17.1:/home/hadoop  /home/hadoop
df
su  - hadoop
###在server1里面做
cd
cd  hadoop
sbin/stop-yarn.sh
sbin/stop-dfs.sh
###在server2和server3里面
jps   ##因为server1服务关了,所以2,3也不显示了
###在server4里面做
jps  ##还有服务,因为server4从server1中脱离出来了
/home/hadoop/hadoop/sbin/hadoop-daemon.sh    stop datanode
jps  ##此时没有服务了
###在所有的服务器上都做下列步骤
rm  -fr  /tmp/*
##在server2里面做
首先要有一个zookeeper-3.4.9.tar.gz  的包,必须在hadoop用户下
tar  zxf  zookeeper-3.4.9.tar.gz
cd  zookeeper-3.4.9/conf
cp  zoo_sample.cfg   zoo.cfg
vim   zoo.cfg
##在里面添加
server.1=172.25.17.2:2888:3888
server.2=172.25.17.3:2888:3888
server.3=172.25.17.4:2888:3888


mkdir  /tmp/zookeeper
cd  /tmp/zookeeper
vim myid 1
##去server3和server4里面做
mkdir   /tmp/zookeeper
cd  /tmp/zookeeper
vim myid 2/3
###在server2,3,4里面做
cd
cd  zookeeer-3.4.9
bin/zkServer.sh  start


###在server2里面做
cd
cd  zookeeer-3.4.9
bin/zkCli.sh  
ls  /
ls  /zookeeper
ls /zookeeper/quota
get /zookeeper/quota


##在server1里面做
cd  
cd  /hadoop/etc/hadoop
vim  core-site.xml
 <property>
        <name>fs.defaultFS</name>
        <value>hdfs://masters</value>
    </property>
<property>
<name>ha.zookeeper.quorum</name>
<value>172.25.17.2:2181,172.25.17.3:2181,172.25.17.4:2181</value>
</property>
vim   hdfs-site.xml
 <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
<property>
<name>dfs.nameservices</name>
<value>masters</value>
</property>
<property>
<name>dfs.ha.namenodes.masters</name>
<value>h1,h2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.masters.h1</name>
<value>172.25.17.1:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.masters.h1</name>
<value>172.25.17.1:50070</value>
</property>
<property>
<name>dfs.namenode.rpc-address.masters.h2</name>
<value>172.25.17.5:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.masters.h2</name>
<value>172.25.0.5:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://172.25.17.2:8485;172.25.17.3:8485;172.25.17.4:8485/masters</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/tmp/journaldata</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.masters</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvid
er</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
###在srver2,3,4节点做
bin/zkServer.sh  start
jps  ##看是否为高可用
cd
cd  hadoop
sbin/hadoop-daemon.sh start journalnode  #3个节点都做


###在server1里面做格式话
cd
cd hadoop
bin/hdfs namenode -format
vim  etc/hadoop/slaves
172.25.17.4
scp   -r  /tmp/hadoop-hadoop  172.25.17.5:/tmp
bin/hdfs  zkfc -formatZK
###在server2里做
cd
cd  zookeeper-3.4.9
bin/zkCli.sh
ls /hadoop-ha/masters
get  /hadoop-ha/masters


###在server1里面做
sbin/start-dfs.sh
jps   ##有3个进程


##继续在server2里做
get /hadoop-ha/masters/ActiveBreadCrumb


##进入浏览器里面做
http://172.25.17.1:50070   active
http://172.25.17.5:50070   ##都能显示standby


##在server1里面做
sbin/start-dfs.sh
bin/hdfs dfs -mkdir  /user
bin/hdfs dfs -mkdir  /user/hadoop
bin/hdfs dfs  -put etc/hadoop/  input


##进入浏览器里面
看到上传了input


##在server1里面
jps
kill  -9  namenode的进称号   ##谁是主master,杀谁的进程号


杀掉 h1 主机的 namenode 进程后依然可以访问,此时 h2 转为 active 状态接
管 namenode
sbin/hadoop-daemon.sh  start  namenode
启动 h1 上的 namenode,此时为 standby 状态。
到此 hdfs 的高可用完成

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值