【Big Data】HADOOP集群的配置(二)

简介:

Hadoop集群的配置(二)


2.8 节点之间的免密码通信

1.什么是SSH

SSH是Secure Shell的缩写,由IETF的网络工作小组(Network Working Group)所制定;SSH为建立在应用层和传输层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。

从客户端来看,SSH提供两种级别的安全验证。

第一种级别  基于口令的安全验证

只要知道自己的帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。

第二种级别  基于密匙的安全验证

需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。

用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。

第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒。

2.虚拟机拷贝节点

关闭当前CentOS,然后右击CentOS,选择“管理”-->“克隆”。

                      

 

分别完成CentOS1、CentOS2、CentOS3的克隆工作,然后分别启动,重复2.2修改网络,用pietty登录,重复2.5的操作步骤更改相应主机名。

思考:node节点上的hosts和其他节点上的hosts一样吗?其中hosts文件还不算大,手工改也不会耗费太多时间,如果搭建的是几百个节点的集群呢?

我们可以登录node节点,把node节点上的hosts远程拷贝到其他节点。

使用scp命令: scp  fromAdd   toAdd  如图

 

注意其中出现了和我们第一次连接出现的提示,The authenticity of host 'node1 (192.168.10.101)' can't be established.我们确认连接方安全输入“yes”回车,输入node1密码连接成功,打开known_hosts我们可以看到生成的密钥:

 

以后再与node1不会再出现提示,因为在known_hosts已经加入了node1。但仍然需要输入密码,下面我们解决免密码登录的问题,读者先完成其他节点的hosts拷贝。

3.SSH免密码登录

在各节点上生成各自SSH秘钥对(命令中的rsa可以改成dsa,安全性更高),以node1为例。

 

 

在本机上生成authorized_keys,并验证能否对本机进行SSH无密码登陆。

 

       

所有节点都生成自己的authorized_keys之后,通过ssh-copy-id命令拷贝各自的公钥到node2节点(可以随机指定某个存在的节点),下面以node1节点为例,node1节点的公钥复制到node2节点中并加入到授权的key中,并验证是否配置成功。

 

 

以下是node2节点完成公钥复制后的文件。

 

由此可见所有节点都已经加入了[微软用户1] ,只要通过远程拷贝那么节点之间就可以实现免密码登录了。

只要在node2节点上执行:

scp /root/.ssh/authorized_keys node:/root/.ssh/;scp /root/.ssh/authorized_keys node1:/root/.ssh/;scp /root/.ssh/authorized_keys node3:/root/.ssh/

 

 

这样,就可以测试节点之间的登录了。

2.9 Hadoop启动和测试

1.格式化文件系统

在node节点上首先格式化namenode,执行命令hdfs  namenode  -format

在出现提示信息的最后第二行出现“Exiting with status 0”表示格式化成功,在UNIX中0表示成功,1表示失败,因此读者如果返回“Exiting with status 1”应该好好分析下前面的错误提示信息,一般来说是因为前面配置文件和hosts文件问题,修改后一定要同步到其他节点上,保持相同环境。

 

注意:有些读者以前用hadoop1.2或者更靠前的版本,会习惯用hadoop namenode -format格式化,这个时候会弹出一条WARNING信息,警告脚本已过时,但不会影响结果,因为Hadoop2.2版本对之前的Hadoop命令几乎都兼容。

注意:格式化前可以先自定义集群名字,如果未定义,系统将自动生成[微软用户2] 。

hadoop namenode -format -clusterid clustername

 2.启动HDFS

使用start-dfs.sh开启hadoop dfs服务。

 

通过上面可以看到,我们启动了HDFS,node节点作为namenode,node1、node2、node3作为datanode,而node1也作为secondnamenode。

可以通过jps命令验证。Jps也是Windows上面的命令,表示开启的Java进程。当出现如下结果,表示验证成功。

       

                

同样,也可以通过网络验证HDFSs情况,在Lunix环境下,在Web浏览器中输入:http://node:50070,当然也可以在Windows环境中通过该URL访问,只需修改如下文件:

C:\Windows\System32\drivers\etc\hosts  添加192.168.10.100 node即可。

 

3.启动YARN集群

在主节点node[微软用户4] 上,执行命令:start-yarn.sh

 

通过输出可以看到namenode已经作为了resourcemanager,而其他三个节点分别作为nodemanager。通过命令tail -f  /home/hadoop/hadoop2.2/logs/yarn-root-resourcemanager-node.out

可以查看启动日志。

或者查看启动对应进程情况: jps

 

其他节点可以通过类似命令验证,当然最方便的是输入地址:http://node:8088/

 

NodeManager运行在从节点上,可以通过Web控制台查看对应节点的资源状态,如节点s1:http://node1:8042/

 

 

4.管理JobHistory Server

启动可以[微软用户5] JobHistory Server,能够通过Web控制台查看集群计算的任务的信息,执行如下命令:       mr-jobhistory-daemon.sh start historyserver


通过访问http://       node:19888/查看任务执行历史信息。


终止JobHistory Server,执行如下命令:mr-jobhistory-daemon.sh stop historyserver

5.集群验证

可以使用Hadoop自带的WordCount例子进行验证。先在HDFS创建几个数据目录:

hadoop fs -mkdir -p /data/wordcount

 

hadoop fs -mkdir -p /output/

目录/data/wordcount用来存放Hadoop自带的WordCount例子的数据文件,运行这个MapReduce任务的结果输出到/output/wordcount目录中。

将本地文件上传到HDFS中:

hadoop fs -put /home/hadoop/hadoop2.2/etc/hadoop/*.xml /data/wordcount/

可以查看上传后的文件情况,执行如下命令:

hadoop fs -ls /data/wordcount

可以看到上传到HDFS中的文件。

下面,运行WordCount例子,执行如下命令:

hadoop  jar  /home/hadoop/hadoop2.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount  /data/wordcount  /output/wordcount

通过http://node:8088/可以看到节点的运行情况。

 

运行结束后可以通过如下命令查看结果:

hadoop fs -cat /output/wordcount/part-r-00000 | head

以后我们掌握了相关api后可以自己编写切词统计程序。

6.需要了解的默认配置

在Hadoop 2.2.0中,YARN框架有很多默认的参数值,如果是在机器资源比较不足的情况下,需要修改这些默认值,来满足一些任务需要。

NodeManager和ResourceManager都是在yarn-site.xml文件中配置的,而运行MapReduce任务时,是在mapred-site.xml中进行配置的。

下面看一下相关的参数及其默认值情况:

3.动态管理节点(了解)


3.1动态增加和删除datanode

总的来说,正确的做法是优先通过配置文件,再在具体机器上进行相应进程的启动/停止操作。

1. 配置文件

  • 在namenode下修改配置文件
  • 在hadoop 0.x中上述配置存放在文件conf/hadoop-site.xml中;
  • 在hadoop 2.x中变化很大,文件为conf/hdfs-site.xml中,参数名为:dfs.namenode.hosts和fs.namenode.hosts.exclude。

参数作用:

dfs.hosts:[微软用户6] 

 

Names   a file that contains a list of hosts that are permitted to connect to the   namenode. The full pathname of the file must be specified. If the value is   empty, all hosts are permitted.

dfs.hosts.exclude:

 

Names a file that contains a list of hosts that are not permitted to connect to the namenode. The full pathname of the file must be specified. If the value is empty, no hosts are excluded

 

用法说明:

修改hdfs-site.xml,添加:

<property>
 
                    <name>dfs.hosts</name>
 
                    <value>/home/hadoop/hadoop2.2/conf/datanode-allow.list</value>
 
          </property>
 
          <property>
 
                    <name>dfs.hosts.exclude</name>
 
                    <value>/home/hadoop/hadoop2.2/conf/datanode-deny.list</value>
 
          </property>

 

  • 如果不需要允许列表,就不要创建对应项了。然后创建value所指定的文件,一行写一个主机名。
  • 在新slave上进行相关配置。
  • 在master上的slave列表加入该slave(非必须,方便以后重启cluster用)
  • (若有)在datanode-allow.list中加入该slave
  • 在slave上启动datanode进程:
  • 运行:hadoop-daemon.sh start datanode  

2. 添加

3. 删除

极端不建议直接在slave上通过:hadoop-daemon.sh stop datanode 命令关掉datanode,这会导致HDFS中出现missing block,具体步骤如下:

  • 在master上修改datanode-deny.list,添加相应机器
  • 在master上刷新节点配置情况:hadoop dfsadmin -refreshNodes  

此时在Web UI上就可以看到该节点变为Decommissioning状态,过一会就变为Dead了。也可以通过:hadoop dfsadmin -report命令查看。  namenode.stale.datanode.interval

  • 在slave上关闭datanode进程(非必须):  

运行: hadoop-daemon.sh stop datanode 

4. 重新加入各个删除的节点

  • 在master的datanode-deny.list删除相应机器
  • 在master上刷新节点配置情况:hadoop dfsadmin -refreshNodes 
  • 在slave上重启datanode进程:hadoop-daemon.sh start datanode 

注意:如果之前没有关闭该slave上的datanode进程,需要先关闭再重新启动。

3.2. 动态修改TaskTracker

1. 配置文件

对于hadoop 2.x下[微软用户7] 在namenode下修改配置文件conf/mapred-site.xml。关键参数mapred.hosts和mapred.hosts.exclude。

参数作用:和datanode的对应项一样。

 

 

 

修改mapred-site.xml,添加参数:

<property>
 
            <name>mapreduce.jobtracker.hosts.filename</name>
 
            <value>/home/hadoop/hadoop2.2/conf/datanode-allow.list</value>
 
  </property>
 
  <property>
 
            <name>mapreduce.jobtracker.hosts.exclude.filename</name>
 
            <value>/home/hadoop/hadoop2.2/conf/datanode-deny.list</value>
 
  </property>

 

然后创建value所指定的文件。一行写一个主机名。

2. 添加

  • 在新slave上进行相关配置。
  • 在master上的slave列表加入该slave(非必须,方便以后重启cluster用)
  • 若有)[微软用户8] 在tasktracker-allow.list中加入该slave
  • 在slave上启动tasktracker进程:
  • 运行:hadoop-daemon.sh start tasktracker  

注意:可以用jps命令查看机器上的java进程的pid和进程名。

3. 删除

不建议直接在slave上通过:hadoop-daemon.sh stop tasktracker命令关掉tasktracker,这会导致namenode认为这些机器暂时失联,在一个超时时间内(默认10min+30s)依然假设它们是正常的还会将任务发送给它们。

  • 在master上修改tasktracker-deny.list,添加相应机器
  • 在master上刷新节点配置情况:hadoop mradmin -refreshNodes  

此时在Web UI上立即就可以看到Nodes的数量减少了,而Exclude Nodes的数量增加了。可以点进去具体查看。

  • 在slave上关闭tasktracker进程(非必须):运行:hadoop-daemon.sh stop tasktracker  

4. 重新加入各个删除的节点

  • 在master的tasktracker-deny.list删除相应机器
  • 在master上刷新节点配置情况:hadoop mradmin -refreshNodes  
  • 在slave上重启tasktracker进程:hadoop-daemon.sh start tasktracker  

注意:如果之前没有关闭该slave上的tasktracker进程,需要先关闭再重新启动。

 


hadoop配置完

相关文章
|
28天前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
121 6
|
28天前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
65 4
|
28天前
|
SQL 分布式计算 Hadoop
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
30 3
|
28天前
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
55 3
|
28天前
|
SQL 分布式计算 Hadoop
Hadoop-34 HBase 安装部署 单节点配置 hbase-env hbase-site 超详细图文 附带配置文件
Hadoop-34 HBase 安装部署 单节点配置 hbase-env hbase-site 超详细图文 附带配置文件
66 2
|
28天前
|
分布式计算 Java Hadoop
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
61 1
|
28天前
|
分布式计算 监控 Hadoop
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
36 1
|
28天前
|
分布式计算 Hadoop Unix
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
39 1
|
28天前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
41 1
|
28天前
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
42 0

相关实验场景

更多