hadoop安装

Ha安装方案

分发JDK到node04、05、06

-scp jdk-7u67-linux-x64.rpm node04:`pwd`

-scp jdk-7u67-linux-x64.rpm node05:`pwd`

-scp jdk-7u67-linux-x64.rpm node06:`pwd`

 

并在Xshell的全部会话栏里一起ll,看jdk是否发送成功。

给node04、05、06分别安装JDK

分别在node04、05、06上执行rpm安装命令

-rpm -i jdk-7u67-linux-x64.rpm

 

在node03上cd /etc,在此目录下把profile文件分发到node04、05、06上。

scp profile node04:`pwd`

 

利用Xshell全部会话栏,source /etc/profile

利用Xshell全部会话栏,jps,看04、05、06这三台机子的jdk是否装好。

 

 

同步所有服务器的时间

date   查看机子当前的时间。

时间不能差太大,否则集群启动后某些进程跑不起来。

若时间不同步,怎么办?

1.yum进行时间同步器的安装

-yum -y install ntp

2.执行同步命令

-ntpdate time1.aliyun.com  和阿里云服务器时间同步

装机之前的配置文件检查

-cat /etc/sysconfig/network

查看HOSTNAME是否正确

-cat /etc/hosts

查看IP映射是否正确

若不正确,可以改文件,也可以把node03上的用scp分发过去。

3. -cat /etc/sysconfig/selinux里是否

SELINUX=disabled

4. service iptables status查看防火墙是否关闭

NN与其他三台机子的免秘钥设置

1在家目录下||-a看下有无.ssh文件,如果没有就ssh loalhost-下。

2.-cd .ssh ,并ll查看一下

3.把node03的公钥发给其他三台机子

4. 在node04的.ssh目录下看是否有node03.pub

如果有,那就追加到authorized_keys

cat node03.pub >> authorized_keys

并且在node03上ssh node04看是否免密钥了,

给node05、06都追加一下node03.pub,也就是在node05、06的.ssh目录下执行cat node03.pub >> authorized_keys

5.同理给其他节点发送公钥并在各个节点上把node03的公钥追加上

scp  id_dsa.pub   node05:`pwd`/node03.pub

scp  id_dsa.pub   node06:`pwd`/node03.pub

 

在node03上分别ssh node04,ssh node05,ssh node06,看是否能免密钥登录,

两个NN间互相免秘钥

.node03与node04间互相免密钥: node03可免密钥登录node04,那现需node04上能免密钥登node03,所以

在node04上:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

ssh localhost验证一下

分发到node03上:scp  id_dsa.pub   node03:`pwd`/node04.pub

在node03的.ssh目录下,cat node04.pub >> authorized_keys,

在node04上ssh node03验证一下可否免密钥登录

修改namenode的一些配置信息

1.vi hdfs-site.xml

去掉snn的配置

 <property>

              <name>dfs.namenode.secondary.http-address</name>

             <value>node03:50090</value>

 </property>

1.vi hdfs-site.xml

‚增加以下property

<!-- 为namenode集群定义一个services name -->

<property>

<name>dfs.nameservices</name>  

<value>mycluster</value>

</property>

1.vi hdfs-site.xml

 

<!--指定HDFS副本的数量,不能超过机器节点数-->

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

 

<!-- nameservice 包含哪些namenode,为各个namenode起名 -->

<property>  

<name>dfs.ha.namenodes. mycluster</name>   <value>nn1,nn2</value>

</property>

1.vi hdfs-site.xml

<!-- 名为nn1的namenode的rpc地址和端口号,rpc用来和datanode通讯 -->

<property>  

<name>dfs.namenode.rpc-address. mycluster.nn1</name>   <value>node03:9000</value>

</property>

<!--名为nn1的namenode的http地址和端口号,用来和web客户端通讯 -->

<property>  

<name>dfs.namenode.http-address. mycluster.nn1</name>   <value>node03:50070</value>

</property>

1.vi hdfs-site.xml

<!-- 名为nn2的namenode的rpc地址和端口号,rpc用来和datanode通讯 -->

<property>  

<name>dfs.namenode.rpc-address. mycluster.nn2</name>   <value>node04:9000</value>

</property>

<!--名为nn2的namenode的http地址和端口号,用来和web客户端通讯 -->

<property>  

<name>dfs.namenode.http-address. mycluster.nn2</name>   <value>node04:50070</value>

</property>

1.vi hdfs-site.xml

<!-- namenode间用于共享编辑日志的journal节点列表 -->

<property>  

<name>dfs.namenode.shared.edits.dir</name>   <value>qjournal://node03:8485;node04:8485;node05:8485/mycluster</value>

</property>    

<!-- journalnode 上用于存放edits日志的目录 -->

<property>  

<name>dfs.journalnode.edits.dir</name>   <value>/var/ldy/hadoop/ha/jn</value>

</property>  

1.vi hdfs-site.xml

<!-- 指定该集群出现故障时,是否自动切换到另一台namenode -->

<property>  

<name>dfs.ha.automatic-failover.enabled.cluster</name>   <value>true</value>

</property>

<!-- 配置失败自动切换实现方式 -->

<property>    

<name>dfs.client.failover.proxy.provider.cluster</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

</property>  

1.vi hdfs-site.xml

<!-- 一旦需要NameNode切换,使用ssh方式进行操作 -->

<property>  

<name>dfs.ha.fencing.methods</name>   <value>sshfence</value>

</property>  

<!-- 如果使用ssh进行故障切换,使用ssh通信时用的密钥存储的位置 -->

<property>  

<name>dfs.ha.fencing.ssh.private-key-files</name>   <value>/root/.ssh/id_rsa</value>

</property>

 

2.vi core-site.xml

<!– 集群名称mycluster-->

<property>

  <name>fs.defaultFS</name>

  <value>hdfs://mycluster</value>

</property>

<!– zookeeper布署的位置-->

<property>

   <name>ha.zookeeper.quorum</name>

   <value>node07:2181,node08:2181,node09:2181</value>

</property>

2.vi slaves

 

node04

node05

node06

3.安装hadoop

cd /opt ,将其下的shy目录分发到node04、05、06

scp –r  shy/ node04:`pwd`

scp –r  shy/ node05:`pwd`

scp –r  shy/ node06:`pwd`

4.将hdfs-site.xml和core-site.xml分发到node04、05、06

 

-scp hdfs-site.xml core-site.xml node04:`pwd`

-scp hdfs-site.xml core-site.xml node05:`pwd`

-scp hdfs-site.xml core-site.xml node06:`pwd`

 

安装zookeeper

1.解压安装zookeeper

tar xf zookeeper-3.4.6.tar.gz -C /opt/shy

 

2.修改zookeeper的配置文件

cd /opt/shy/zookeeper-3.4.6/conf

给zoo_sample.cfg改名

cp zoo_sample.cfg zoo.cfg

vi zoo.cfg

改dataDir=/var/shy/zk

并在末尾追加

    server.1=node04:2888:3888

server.2=node05:2888:3888

server.3=node06:2888:3888

其中2888主从通信端口,3888是当主挂断后进行选举机制的端口

.把zookeeper分发到其他节点

scp -r zookeeper-3.4.6/ node05:`pwd`

scp -r zookeeper-3.4.6/ node06:`pwd`

并用ll /opt/shy检查下看分发成功没

4.给每台机子创建刚配置文件里的路径

mkdir -p /var/shy/zk

对node04来说:

echo 1 > /var/shy/zk/myid

cat /var/shy/zk/myid

对node05来说:

echo 2 > /var/shy/zk/myid

cat /var/shy/zk/myid

对node06来说:

echo 3 > /var/shy/zk/myid

cat /var/shy/zk/myid

5.在/etc/profile里面配置

export ZOOKEEPER_HOME=/opt/shy/zookeeper-3.4.6

export PATH=$PATH:/usr/java/jdk1.7.0_67/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin

 

6.然后在把/etc/profile分发到其他node05、node06

scp /etc/profile node05:/etc

scp /etc/profile node06:/etc

 

在node04、05、06里source /etc/profie,这步千万别忘

验证source这句是否完成,输入zkCli.s,按Tab可以把名字补全zkCli.sh

7.启动zookeeper

全部会话:zkServer.sh start

接着用zkServer.sh status查看每个zookeeper节点的状态

注意:如果启动不起来,请把/etc/profile里的JAVA_HOME改

成绝对路径。启动journalnode

Why启动journalnode?

为了使两台namenode间完成数据同步

 

在03、04、05三台机子上分别把journalnode启动起来

hadoop-daemon.sh start journalnode

用jps检查下进程启起来了没

格式化任一namenode

随意挑一台namenode上执行hdfs namenode –format

另一台namenode不用执行,否则clusterID变了,找不到集群了。

然后,启动刚刚格式化的那太namenode

hadoop-daemon.sh start namenode

给另一namenode同步数据

那另一台namenode怎么办,什么都不做吗?

我们要给另一台namenode同步一下数据,用以下命令

hdfs namenode -bootstrapStandby

格式化ZKFC

hdfs zkfc -formatZK

 

在node04上执行zkCli.sh打开zookeeper客户端看hadoop-ha是否打开

在node04上执行zkCli.sh打开zookeeper客户端看hadoop-ha是否打开

启动hdfs集群

在node03上启动hdfs集群:

start-dfs.sh

注意:如果那个节点没起来到hadoop目录下去看那个node的日志文件log

然后全部会话jps看一下都起来些什么进程

用浏览器访问node003:50070和node004:50070

关闭集群命令:stop-dfs.sh

关闭zookeeper命令:zkServer.sh stop

注意:你下一次启动hdfs集群的时候还需要用hadoop-daemon.sh start journalnode命令启动journalnode吗?

不需要

只要start-dfs.sh就可以了。我们之前启动journalnode是为了同步两个namenode之间的信息。

 

为MapReduce做准备

 

 

把mapred-site.xml.template留个备份,并且改下名字

cp mapred-site.xml.template mapred-site.xml

在mapred-site.xml里添加如下property

<property>

         <name>mapreduce.framework.name</name>

         <value>yarn</value>

</property>

在yarn-site.xml里添加如下property

<property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>

<property>

   <name>yarn.resourcemanager.ha.enabled</name>

   <value>true</value>

 </property>

 <property>

   <name>yarn.resourcemanager.cluster-id</name>

   <value>cluster1</value>

 </property>

<property>

   <name>yarn.resourcemanager.ha.rm-ids</name>

   <value>rm1,rm2</value>

 </property>

 <property>

   <name>yarn.resourcemanager.hostname.rm1</name>

   <value>node05</value>

 </property>

 <property>

   <name>yarn.resourcemanager.hostname.rm2</name>

   <value>node06</value>

 </property>

 <property>

   <name>yarn.resourcemanager.zk-address</name>

   <value>node04:2181,node05:2181,node06:2181</value>

 </property>

 

把mapred-site.xml和yarn-site.xml 分发到node004、005、006

scp mapred-site.xml yarn-site.xml node004:`pwd`

scp mapred-site.xml yarn-site.xml node005:`pwd`

scp mapred-site.xml yarn-site.xml node006:`pwd`

 

 

 

 

 

由于node05和node06都是resourcemanager,所以它俩应该相互免密钥

node05上免密钥登录node06:

在node05的.ssh目录下生成密钥

ssh-keygen -t dsa -P '' -f ./id_dsa

并追加到自己authorized_keys

cat id_dsa.pub >> authorized_keys

用ssh localhost验证看是否需要密码,别忘了exit

将node05 的公钥分发到node06

scp id_dsa.pub node06:`pwd`/node05.pub

在node06的.ssh目录下,追加node05.pub

cat node05.pub >> authorized_keys

在node05上ssh node06,看是否免密钥

node06上免密钥登录node05:

在node06的.ssh目录下生成密钥

ssh-keygen -t dsa -P '' -f ./id_dsa

并追加到自己authorized_keys

cat id_dsa.pub >> authorized_keys

用ssh localhost验证看是否需要密码,别忘了exit

将node06 的公钥分发到node05

scp id_dsa.pub node05:`pwd`/node06.pub

在node05的.ssh目录下,追加node06.pub

cat node06.pub >> authorized_keys

在node06上ssh node05,看是否免密钥

 

1.启动zookeeper,全部会话zkServer.sh start

2.在node03上启动hdfs,start-dfs.sh

3.在node03上启动yarn,start-yarn.sh

4.在node05、06上分别启动resourcemanager,

yarn-daemon.sh start resourcemanager

5.全部会话jps,看进程全不全

在浏览器访问node005:8088,查看resourcemanager管理的内容

跑一个wordcount试试

1.cd /opt/shy/hadoop-2.6.5/share/hadoop/mapreduce

2.在hdfs里建立输入目录和输出目录

hdfs dfs -mkdir -p /data/in

hdfs dfs -mkdir -p /data/out

3.将要统计数据的文件上传到输入目录并查看

hdfs dfs -put ~/500miles.txt /data/input

hdfs dfs -ls /data/input

4. 运行wordcount(注意:此时的/data/out必须是空目录

hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount /data/in /data/out/result

5.查看运行结果

hdfs dfs -ls /data/out/result

hdfs dfs -cat /data/out/result/part-r-00000

 

 

 

 

 

 

关闭集群

关闭集群:

node03: stop-dfs.sh

node03: stop-yarn.sh (停止nodemanager)

node05,node06: yarn-daemon.sh stop resourcemanager

Node04、05、06:zkServer.sh stop

 

 

在Windows下配置hadoop的环境

把我给你的压缩包解压后的这三个文件夹放到一个usr文件夹里,把usr放到一个你知道的地方。

 

“此电脑”右键-属性-高级系统设置

 

 

 

 

 

更改环境变量,增加HADOOP_HOME

 

 

 

 

并且给path后追加HADOOP_HOME的bin目录,注意:Windows里path的路径分隔符是分号;,而不是冒号:

 

 

 

 

然后再新建一个变量HADOOP_USER_NAME

 

 

 

 

 

 

 

把hadoop.dll拷贝到以下路径

 

安装ecipse-mars,此版本的eclipse带插件,可以可视化的看到hadoop的一些东西,比较方便

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

如果eclipse界面下方没有小象图标,则做后续三步调出

 

在eclipse里把hadoop相关信息填一下

 

 

 

 

 在eclipse里导入自己建一个包库

 

把刚建的包库引入到project里

 

 

 

 

 

 

 

 

 

 

 

把JUnit包库引入到project里

 

利用xftp把hdfs-site.xml,core-site.xml等几个xml放到project的src目录。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值