2.7.2hadoop分布式安装

本篇博客对hadoop分布式安装做一下说明:

安装包

JDK安装

hadoop安装

ssh安全登录

关闭防火墙

注意事项

安装包

jdk-8u181-linux-x64.tar.gz

hadoop-2.7.7.tar.gz

JDK安装

1)      解压:Tar –xzvf  jdk-8u181-linux-x64.tar.gz

jdk包重命名为jdk8

3)      生效:source /etc/profile

hadoop安装

1)      解压:tar –xzvf hadoop-2.7.7.tar.gz

2)      环境配置:

3)      Hadoop配置文件:

在对core-site.xml做配置的时候,其中属性hadoop.tmp.dir作为namenode和datanode文件系统的临时存放目录。当服务重启(start-all.sh)后,/tmp 下的目录被清空,Hadoop无法找到dfs/name 这个dfs文件系统的域名空间文件,就会报错。
hadoop.tmp.dir 是 hadoop文件系统依赖的基本配置,很多配置路径都依赖它。

      在core-site.xml中配置 hadoop.tmp.dir 路径到持久化目录。

Core-site.xml:

<property>

 <!—hadoop.tmp.dir 是hadoop文件系统依赖的基础配置,很多路径都依赖它。如果hdfs-site.xml中不配置namenode和datanode的存放位置,默认就放在这个路径中,name存放集群的文件系统,data存放本地的文件系统-->

       <name>hadoop.tmp.dir</name>

       <value>file:/hadoop/tmp</value>

 </property>

 

 <property>

         <name>io.file.buffer.size</name>

         <value>131702</value>

 </property>

 <!--  fs.default.name -这是一个描述集群中NameNode结点的URI(包括协议、主机名称、端口号),集群里面的每一台机器都需要知道NameNode的地址。DataNode结点会先在NameNode上注册,这样它们的数据才可以被使用。独立的客户端程序通过这个URI跟DataNode交互,以取得文件的块列表。-->

 <property>

 <name>fs.defaultFS</name>

 <value>hdfs://master:9000</value>

 </property>

Hdfs-site.xml:

<!--  dfs.data.dir 这是DataNode结点被指定要存储数据的本地文件系统路径-->

<property>

       <name>dfs.namenode.name.dir</name>

       <value>file:/hadoop/hdfs/name</value>

</property>

<property>

dfs.name.dir 这是NameNode结点存储hadoop文件系统信息的本地系统路径。这个值只对NameNode有效,DataNode并不需要使用到它。

       <name>dfs.datanode.data.dir</name>

       <value>file:/hadoop/hdfs/data</value>

</property>

      <!—解决:org.apache.hadoop.security.AccessControlException:Permission                                                 denied:user=Administrator,access=WRITE,inode="tmp":root:supergroup:rwxr-xr-x

因为Eclipse使用hadoop插件提交作业时,会默认以 DrWho 身份去将作业写入hdfs文件系统中,对应的也就是 HDFS 上的/user/hadoop ,  由于 DrWho 用户对hadoop目录并没有写入权限,所以导致异常的发生。解决方法为:放开 hadoop 目录的权限, 命令如下 :$ hadoop fs -chmod 777 /user/hadoop-->

               <property> 

                   <name>dfs.permissions</name>

                   <value>false</value>

<description>

                      If "true", enable permission checking in HDFS. If "false", permission checking is turned                     off,   but all other behavior is unchanged. Switching from one parameter value to                                   the other does   not change the mode, owner or group of files or directories

              </description>

 

        </property>

<property>

       <name>dfs.webhdfs.enabled</name>

       <value>true</value>

</property>

 

<property>

       <name>dfs.replication</name>

       <value>2</value>

</property>

<property>

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

       <value>master:9001</value>

</property>

Mapred-site.xml:

<property>

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

 <value>yarn</value>

 </property>

<property>

 <name>mapreduce.jobhistory.address</name>

 <value>master:10020</value>

 </property>

<property>

 <name>mapreduce.jobhistory.webapp.address</name>

 <value>master:19888</value>

 </property>

Yarn-site.xml:

<property>

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

       <value>master</value>

 </property>

 <property>

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

       <value>mapreduce_shuffle</value>

 </property>

<property>

       <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

       <value>org.apache.hadoop.mapred.ShuffleHandler</value>

 </property>

<property>

       <name>yarn.resourcemanager.scheduler.address</name>

       <value>master:8030</value>

 </property>

<property>

       <name>yarn.resourcemanager.resource-tracker.address</name>

       <value>master:8035</value>

 </property>

<property>

       <name>yarn.resourcemanager.admin.address</name>

       <value>master:8033</value>

 </property>

<property>

       <name>yarn.resourcemanager.webapp.address</name>

       <value>master:8088</value>

 </property>

hadoop-env.sh:

export JAVA_HOME=/usr/local/jdk7将$JAVA_HOME改为exportJAVA_HOME=/usr/local/jdk7

 

 

1.      配置slaves文件,把所有的datanode节点配置到slaves文件中,各占一行

关闭防火墙

第一种关闭防火墙操作指令

serviceiptables stop;查看是否关闭:service iptables status;关闭防火墙自动运行,执行命令:chkconfig iptables off;查看是否关闭:chkconfig –list | grep iptables

第二种关闭防火墙操作指令

systemctl stop firewalld.service 停止防火墙

systemctl disable firewall.service 禁止开机自启动

firewall-cmd-state 查看防火墙状态

注意事项

 

    hadoop所安装的服务器主从节点用户名最好一致,这样免密码登陆时就会默认采用统一的用户名

 

1.1  Datanode没启动

当进行多次初始化的时候,datanode服务器上所属的集群ID clusterID跟namenode的clusterID不一致。Datanode也可以配置多个目录,每个目录保存的内容不一致,不是对当前文件存放路径信息的备份

hdfs dfsadmin –report查询不到存活的datanode节点

Namenode和datanode服务器上的防火墙都没关闭

ssh安全登录

集群中的每一个节点都能自登陆。这里对ssh安全登录原理说一下:ssh可以生成两个密钥对,可以看成是对数据传输的一种加密算法,一个是私密,一个是公密。私密存放在本地服务器,公密可以放到其他服务器的认证文件authorized_keys中。当存放有私密的服务器安全登录带有公密的服务器的时候,会发送加密数据,带有公密的服务器根据解密算法,解读到私密发来的数据,通过自己的加密,再把数据返回到带有私密的服务器上,这样两个服务器就可以免密码进行数据传输了。

1)      Ssh-keygen –t rsa –P ‘’

2)      Cd ./.ssh

3)      Cat id_rsa.pub >>  authorized_keys

4)      Chmod 600 authorized_keys

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值