Hadoop开发入门与实践(三)

Hadoop开发入门与实践(三)

一、配置ssh免密码登陆

1、查看隐藏文件:

[root@xtwyhadoop ~]# ls -la
images
[root@xtwyhadoop ~]# cd .ssh
iamges
known_hosts 知道的主机

2、生成ssh免登陆密钥

[root@xtwyhadoop .ssh]# ssh-keygen -t rsa
iamgs

3、查看生在的文件:

images
执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
images

4、将公钥拷贝到要免登陆的机器上

[root@xtwyhadoop .ssh]# cp id_rsa.pub authorized_keys
或用以下命令:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
或:
ssh-copy-id 主机名
将一台机器的公钥发送到另一台机器

5、测试进行停止与启动:

[root@xtwyhadoop .ssh]# stop-all.sh
images
[root@xtwyhadoop .ssh]# start-all.sh
images
不用再输入密码了。

二、集群模式

  Hadoop对应的Java进程运行在多台物理机器上,称为集群模式.[集群就是有主有从]。
完全分部式是真正利用多台 Linux 主机来进行部署 Hadoop,对 Linux 机器集群进行规划,使得 Hadoop 各个模块分 别部署在不同的多台机器上。

(一)服务器功能规划

masterhadoopslave1hadoopslave2hadoop
192.168.0.106192.168.0.107192.168.0.108
ResourceManage
DataNodeDataNodeDataNode
NodeManagerNodeManagerNodeManager
HistoryServerSecondaryNameNode

(二)Master配置:

Master节点仅作为NameNode使用

1、修改Hadoop配置
(1)修改core-site.xml

[root@hadoop hadoop]# vi core-site.xml

<configuration>
        <property>
                <!-- 指定HDFS(namenode)的通信地址 -->
                <name>fs.defaultFS</name>
                <value>hdfs://masterhadoop:9000</value>
        </property>
        <property>
                <!-- 指定hadoop运行时产生文件的存储路径 -->
                <name>hadoop.tmp.dir</name>
                <value>/home/root/hadoop_tmp</value>
        </property>
</configuration>

fs.defaultFS 为 NameNode 的地址
hadoop.tmp.dir 为 hadoop 临时目录的地址,默认情况下,NameNode 和 DataNode 的数据文件都会存在这个目录下的对应子目录下。应该保证此目录是存在的,如果不存在,先创建。

(2)修改hdfs-site.xml

[root@slave2hadoop hadoop]# vi hdfs-site.xml

<configuration>
        <property>
<!-- 设置namenode的http通讯地址 -->
        <name>dfs.namenode.http-address</name>
        <value>masterhadoop:50070</value>
    </property>
<property>
<!-- 设置secondarynamenode的http通讯地址 -->
        <name>dfs.namenode.secondary.http-address</name>
        <value>slave1hadoop:50090</value>
    </property>
        <property>
                <!-- 设置hdfs副本数量 -->
                <name>dfs.replication</name>
                <value>3</value>
        </property>
        <property>
                <!-- 设置namenode存放的路径 -->
                <name>dfs.namenode.name.dir</name>
                <value>/home/root/hadoop_tmp/dfs/name</value>
        </property>
        <property>
                <!-- 设置datanode存放的路径 –->
                <name>dfs.datanode.data.dir</name>
                <value>/home/root/hadoop_tmp/dfs/data</value>
        </property>
</configuration>
(3)修改mapred-site.xml

[root@masterhadoop hadoop]# mv mapred-site.xml.template mapred-site.xml
[root@slave2hadoop hadoop]# vi mapred-site.xml

<configuration>
   <property>
<!-- 通知框架MR使用YARN -->
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>masterhadoop:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>masterhadoop:19888</value>
    </property>
</configuration>

mapreduce.framework.name 设置 mapreduce 任务运行在 yarn 上。 mapreduce.jobhistory.address 是设置 mapreduce 的历史服务器安装在 xtwyhadoop机器上。
mapreduce.jobhistory.webapp.address 是设置历史服务器的 web 页面地址和端口号。

(4)修改yarn-site.xml

[root@softhadoop hadoop]# vi yarn-site.xml

<configuration>
<property>
         <!-- reducer取数据的方式是mapreduce_shuffle -->
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
<property>
<!-- 设置 resourcemanager 在哪个节点-->
        <name>yarn.resourcemanager.hostname</name>
        <value>masterhadoop</value>
</property>
</configuration>

根据规划yarn.resourcemanager.hostname 这个指定resourcemanager 服务器指向softhadoop
yarn.log-aggregation-enable 是配置是否启用日志聚集功能。
yarn.log-aggregation.retain-seconds 是配置聚集的日志在 HDFS 上最多保存多长时间。

2、启动Hadoop进行测试:

[root@masterhadoop ~]# ${HADOOP_HOME}/sbin/hadoop-daemon.sh start namenode
[root@masterhadoop ~]# jps
3305 NameNode
3434 Jps
images

(三)Slave配置

1、配置主机名:

[root@softhadoop ~]# vi /etc/hosts
192.168.0.107 slave1hadoop

2、配置slaves

[root@xtwyhadoop usr]# vi /hadoop/hadoop-2.7.4/etc/hadoop/slaves
masterhadoop
slave1hadoop
slave2hadoop
slaves文件是指定HDFS上有哪些 DataNode节点

3、配置每台电脑的hosts文件:

[root@masterhadoop /]# vi /etc/hosts
192.168.0.106 masterhadoop
192.168.0.107 slave1hadoop
192.168.0.108 slave2hadoop

4、 建立集群之间的SSH无密码登录

(1)删除掉~/.ssh文件夹内的所有内容,然后重新生成dsa密钥。

[root@masterhadoop ~]# cd ~/.ssh/

(2)会有提示,都按回车就可以

[root@masterhadoop .ssh]# ssh-keygen -t rsa

(3)加入授权

[root@masterhadoop .ssh]# cat id_rsa.pub >> authorized_keys

(4)修改文件权限,如果不改,无法通过.

[root@masterhadoop .ssh]# chmod 600 ./authorized_keys

4、具体步骤(以master无密码登录slaver为例):

(1)首先将master生成的公匙用scp命令传到所有的slaver上(以下命令是在master上执行)

[root@masterhadoop /]# ssh-copy-id slave1hadoop
images
同样的在slave1、slave2上生成公钥和私钥后,将公钥分发到其它机器上。
从master上访问slave1/2即可无需密码了。
[root@masterhadoop ~]# ssh slave2hadoop
images

5、发布文件到从机

master配置hadoop,然后将master的hadoop文件传送给node节点.
此方法可不用每台配置。

(1)压缩已配置好的Master文件:

[root@masterhadoop /]# tar -zcf hadoop.master.tar.gz ./hadoop
images

(2)上传文件到slaves主机的根目录:

[root@masterhadoop /]# scp ./hadoop.master.tar.gz slave1hadoop:/
images
在Slave1hadoop中查看:
images

6、首次启动需要在Master节点执行NameNode格式化:

[root@masterhadoop hadoop]# hdfs namenode -format
images
注意:
如果需要重新格式化NameNode,需要先将原来 NameNode 和 DataNode下的文件全部删除,不然会报错,NameNode 和 DataNode 所在目录是在 core-site.xml 中 hadoop.tmp.dir、dfs.namenode.name.dir、 dfs.datanode.data.dir 属性配置的。
因为每次格式化,默认是创建一个集群 ID,并写入 NameNode 和 DataNode 的 VERSION 文件中(VERSION 文件所 在目录为 dfs/name/current 和 dfs/data/current),重新格式化时,默认会生成一个新的集群 ID,如果不删 除原来的目录,会导致 namenode 中的 VERSION 文件中是新的集群 ID,而 DataNode 中是旧的集群 ID,不一致时 会报错。
另一种方法是格式化时指定集群 ID 参数,指定为旧的集群 ID。

7、启动测试

启动需要在Master节点上进行

(1)启动HDFS进程

[root@masterhadoop hadoop]# start-dfs.sh
images

(2)查看Slaves上的进程:

images
images

(3)启动计算平台

[root@masterhadoop hadoop]# start-yarn.sh
images

(4)启动jobhistoryserver来实现web查看作业的历史运行情况

[root@masterhadoop hadoop]# mr-jobhistory-daemon.sh start historyserver
images
配置好后,将Master上的 /hadoop 文件夹复制到各个节点上(缺少任一进程都表示出错。另外还需要在 Master 节点上通过命令 hdfs dfsadmin -report 查看 DataNode 是否正常启动,如果 Live datanodes 不为 0 ,则说明集群启动成功。
[root@masterhadoop hadoop]# hdfs dfsadmin -report
images

(5)通过Web页面看到查看 DataNode和NameNode的状态:

IP是master的IP地址。如果不成功,可以通过启动日志排查原因。
iamges
http://192.168.0.106:8088/cluster

(6) 执行以下命令将Hadoop的安装包发送到Hdfs上,查看HDFS的状态:

[root@masterhadoop /]# hadoop fs -mkdir -p /user/hadoop
[root@masterhadoop /]# hadoop fs -put hadoop.master.tar.gz /user/hadoop
iamges
images

8、执行分布式实例

9、关闭Hadoop集群

关闭Hadoop集群也是在 Master 节点上执行的:
[root@masterhadoop /]# stop-yarn.sh
[root@masterhadoop /]# stop-dfs.sh
[root@masterhadoop /]# mr-jobhistory-daemon.sh stop historyserver
images

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值