1、Hadoop220 部署spark 10Hadoop2.2.0 部署spark 1.0 2014年7月郭运凯目 录介绍 11 集群网络环境介绍及快速部署 22 SSH无密码验证配置 62.1配置所有节点之间SSH无密码验证 63 JDK安装和Java环境变量配置 103.1 安装 JDK 1.7 103.2 Java环境变量配置 104 Hadoop集群配置 11(1)配置Hadoop的配置文件 11(2)复制配置好的各文件到所有数据节点上。 145 Hadoop集群启动 156 Hadoop测试 177 用YarnClient调用hadoop集群 188.配置spark 1.0集群 208.
2、1 配置环境变量 206.3 将程序分发给每个节点 216.4 启动 216.5 执行测试程序 22介绍 这是利用Vmware 10.0在一台服务器上搭建的分布式环境,操作系统CentOS 6.4 X64中配置Hadoop-2.2.0时的总结文档。 Hadoop配置建议所有配置文件中使用主机名进行配置,并且机器上应在防火墙中开启相应端口,并设置SSHD服务为开机启动,此外java环境变量可以在/etc/profile中配置。1 集群网络环境介绍及快速部署 集群包含五个节点:1个namenode,4个datanode,节点之间局域网连接,可以相互ping通。所有节点均是Centos 6.4 64
3、位系统,防火墙均禁用,sshd服务均开启并设置为开机启动。a) 首先在VMware中安装好一台Centos 6.4,创建hadoop用户。假设虚拟机的名字为NameNodeb) 关闭虚拟机,把NameNode文件夹,拷贝4份,并命名为DataNode1,.,DataNode4c) 用VMware打开每个DateNode,设置其虚拟机的名字d) 打开操作系统,当弹出对话框时,选择“I copy it”e) 打开每个虚拟机,查看ip地址ifconfig现将IP地址规划如下192.168.1.150namenode192.168.1.151datanode1192.168.1.152datanode
4、2192.168.1.153datanode3192.168.1.154datanode4f) 每个虚拟机,永久关闭防火墙(非常重要,一定要确认),并关闭SELINUXchkconfig iptables off (永久生效)service iptables stop (临时有效)vim /etc/selinux/config rootDataNode1 local# chkconfig iptables offrootDataNode1 local# service iptables stopiptables: Flushing firewall rules: OK iptables: Se
5、tting chains to policy ACCEPT: filter OK iptables: Unloading modules: OK rootDataNode1 local#g) 配置NameNode第一步,检查机器名#hostname如发现不对,则修改,root用户登陆,修改命令如下# vim /etc/sysconfig/networkNETWORKING=yesHOSTNAME=NameNode依次对每个节点进行处理,修改完之后,重启系统 #rebooth) 修改/etc/hostsroot用户vim /etc/sysconfig/network(1)namenode节点上编
6、辑/etc/hosts文件将所有节点的名字和IP地址写入其中,写入如下内容,注意注释掉127.0.0.1行,保证内容如下:(对IP地址一定要确认,是否有重复或者错误)192.168.1.150 namenode192.168.1.151 datanode1192.168.1.152 datanode2192.168.1.153 datanode3192.168.1.154 datanode4# 127.0.0.1 centos63 localhost.localdomain localhost(2)将Namenode上的/etc/hosts文件复制到所有数据节点上,操作步骤如下: root用户
7、登录namenode;执行命令: scp /etc/hosts root192.168.1.151:/etc/hostsscp /etc/hosts root192.168.1.152:/etc/hostsscp /etc/hosts root192.168.1.153:/etc/hostsscp /etc/hosts root192.168.1.154:/etc/hostsi) 规划系统目录安装目录和数据目录分开,且数据目录和hadoop的用户目录分开,如果需要重新格式化,则可以直接删除所有的数据目录,然后重建数据目录。如果数据目录和安装目录或者用户目录放置在一起,则对数据目录操作时,存在误
8、删除程序或者用户文件的风险。完整路径说明/opt/hadoophadoop的程序安装主目录/home/hadoop/hd_space/tmp临时目录/home/hadoop/hd_space/hdfs/namenamenode上存储hdfs名字空间元数据 /home/hadoop/hd_space/hdfs/datadatanode上数据块的物理存储位置/home/hadoop/hd_space/mapred/localtasktracker上执行mapreduce程序时的本地目录/home/hadoop/hd_space/mapred/system这个是hdfs中的目录,存储执行mr程序时的
9、共享文件开始建立目录:在NameNode下,root用户rm -rf /home/hd_spacemkdir -p /home/hadoop/hd_space/tmpmkdir -p /home/hadoop/hd_space/dfs/namemkdir -p /home/hadoop/hd_space/dfs/datamkdir -p /home/hadoop/hd_space/mapred/localmkdir -p /home/hadoop/hd_space/mapred/systemchown -R hadoop:hadoop /home/hadoop/hd_space/修改目录/ho
10、me/hadoop的拥有者(因为该目录用于安装hadoop,用户对其必须有rwx权限。)chown -R hadoop:hadoop /home/hadoop创建完毕基础目录后,下一步就是设置SSH无密码验证,以方便hadoop对集群进行管理。2 SSH无密码验证配置 Hadoop需要使用SSH协议,namenode将使用SSH协议启动namenode和datanode进程,datanode向namenode传递心跳信息可能也是使用SSH协议,这是我认为的,还没有做深入了解,datanode之间可能也需要使用SSH协议。假若是,则需要配置使得所有节点之间可以相互SSH无密码登陆验证。2.1配置
11、所有节点之间SSH无密码验证(0)原理节点A要实现无密码公钥认证连接到节点B上时,节点A是客户端,节点B是服务端,需要在客户端A上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到服务端B上。当客户端A通过ssh连接服务端B时,服务端B就会生成一个随机数并用客户端A的公钥对随机数进行加密,并发送给客户端A。客户端A收到加密数之后再用私钥进行解密,并将解密数回传给B,B确认解密数无误之后就允许A进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端A公钥复制到B上。因此如果要实现所有节点之间无密码公钥认证,则需要将所有节点的公钥都复制到所有节点上。(1)所有机器
12、上生成密码对(a)所有节点用hadoop用户登陆,并执行以下命令,生成rsa密钥对:ssh-keygen -t rsa 这将在/home/hd_space/.ssh/目录下生成一个私钥id_rsa和一个公钥id_rsa.pub。# su hadoop ssh-keygen -t rsa Generating public/private rsa key pair.Enter file in which to save the key (/home/ hadoop /.ssh/id_rsa): 默认路径Enter passphrase (empty for no passphrase): 回车,
13、空密码Enter same passphrase again: Your identification has been saved in /home/ hadoop /.ssh/id_rsa.Your public key has been saved in /home/ hadoop /.ssh/id_rsa.pub.这将在/home/hd_space/.ssh/目录下生成一个私钥id_rsa和一个公钥id_rsa.pub。(b)将所有datanode节点的公钥id_rsa.pub传送到namenode上:DataNode1上执行命令:scp id_rsa.pub hadoopNameNo
14、de:/home/hadoop/.ssh/ id_rsa.pub.datanode1.DataNodeN上执行命令:scp id_rsa.pub hadoopNameNode:/home/hadoop/.ssh/ id_rsa.pub.datanoden检查一下是否都已传输过来各个数据节点的公钥已经传输过来。 (c)namenode节点上综合所有公钥(包括自身)并传送到所有节点上hadoopNameNode .ssh$ cat id_rsa.pub authorized_keys 这是namenode自己的公钥hadoopNameNode .ssh$ cat id_rsa.pub.datano
15、de1 authorized_keyshadoopNameNode .ssh$ cat id_rsa.pub.datanode2 authorized_keyshadoopNameNode .ssh$ cat id_rsa.pub.datanode3 authorized_keyshadoopNameNode .ssh$ cat id_rsa.pub.datanode4 authorized_keys chmod 644 /.ssh/authorized_keys使用SSH协议将namenode的公钥信息authorized_keys复制到所有DataNode的.ssh目录下。scp auth
16、orized_keys data节点ip地址:/home/hd_space/.ssh scp /.ssh/authorized_keys hadoopDataNode1:/home/hadoop/.ssh/authorized_keys scp /.ssh/authorized_keys hadoop DataNode2:/home/hadoop/.ssh/ authorized_keys scp /.ssh/authorized_keys hadoop DataNode3:/home/hadoop/.ssh/ authorized_keys scp /.ssh/authorized_keys
17、 hadoop DataNode4:/home/hadoop/.ssh/ authorized_keys 从这里就可以看到,当配置好hosts之后,就可以直接以机器名来访问各个机器,不用再记忆各个机器的具体IP地址,当集群中机器很多且IP不连续时,就发挥出威力来了。从上图可以看到,将authorized_keys分发给各个节点之后,可以直接ssh登录,不再需要密码。 这样配置过后,namenode可以无密码登录所有datanode,可以通过命令“ssh DataNode1(2,3,4)”来验证。 配置完毕,在namenode上执行“ssh NameNode,所有数据节点”命令,因为ssh执行一
18、次之后将不会再询问。在各个DataNode上也进行“ssh NameNode,所有数据节点”命令。至此,所有的节点都能相互访问,下一步开始配置jdk3 JDK安装和Java环境变量配置3.1 安装 JDK 1.71.下载JDK。 选定linux环境版本,下载到的文件是:jdk-7u21-linux-x64.tar.gz2解压mv jdk-7u21-linux-x64.tar.gztar xf jdk-7u21-linux-x64.tar.gz3.2 Java环境变量配置 root用户登陆,命令行中执行命令”vim /etc/profile”,并加入以下内容,配置环境变量(注意/etc/prof
19、ile这个文件很重要,后面Hadoop的配置还会用到)。#set java environmentexport JAVA_HOME=/opt/jdk1.7.0_21export JRE_HOME=/opt/jdk1.7.0_21/jreexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar保存并退出,执行以下命令使配置生效chmod +x /etc/profilesource /etc/profile 配置完毕,在命令行中使用命
20、令“java - version”可以判断是否成功。在hadoop用户下测试java version,一样成功。4 Hadoop集群配置 在namenode上执行: Hadoop用户登录。下载hadoop-2.2.0(已编译好的64位的hadoop 2.2,可以从网盘下载 ),将其解压到/opt目录下. (1)配置Hadoop的配置文件 (a)配置/etc/profile#set hadoopexport HADOOP_HOME=/opt/hadoop-2.2.0export HADOOP_CONF_DIR=/opt/hadoop-2.2.0/etc/hadoopexport YARN_CON
21、F_DIR=/opt/hadoop-2.2.0/etc/hadoopexport PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH(b)配置hadoop-env.sh $ vim $HADOOP_CONF_DIR/hadoop-env.shexport JAVA_HOME=/opt/jdk1.7.0_21(c) yarn-env.shvim $HADOOP_CONF_DIR/ yarn-env.shexport JAVA_HOME=/opt/jdk1.7.0_21(d)core-site.xmlvim $HADOOP_CONF_DIR/core-sit
22、e.xml fs.defaultFS hdfs:/NameNode:9000 hadoop.tmp.dir /home/hadoop/hd_space/tmp(e) hdfs-site.xml dfs.name.dir /home/hadoop/hd_space/hdfs/name dfs.data.dir /home/hadoop/hd_space/hdfs/data dfs.replication 3 (f) mapred-site.xml mapreduce.cluster.local.dir /home/hadoop/hd_space/mapred/local mapreduce.cl
23、uster.system.dir /home/hadoop/hd_space/mapred/system mapreduce.framework.name yarn mapreduce.jobhistory.address NameNode:10020 mapreduce.jobhistory.webapp.address NameNode:19888 (g)配置masters文件,把localhost修改为namenode的主机名NameNode(h)配置slaves文件, 删除localhost,加入所有datanode的主机名DataNode1DataNode2DataNode3Data
24、Node4(2)复制配置好的各文件到所有数据节点上。在NameNode,执行脚本命令 for target in DataNode1 DataNode2 DataNode3 DataNode4do scp -r /opt/hadoop-2.2.0/etc/hadoop $target:/opt/hadoop-2.2.0/etc done5 Hadoop集群启动hadoop namenode -format-因为配置了环境变量,此处不需要输入hadoop命令的全路径/hadoop/bin/hadoop 执行后的结果中会提示“ dfs/namehas been successfully formatted”。否则格式化失败。启动hadoop:start-dfs.shstart-yarn.sh
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1