unbunt搭建hadoop2.7.6完全分布式集群

本文详细介绍了如何在Ubuntu上搭建Hadoop2.7.6的完全分布式集群,包括安装配置JDK1.8、配置Hadoop各组件的XML文件、分发Hadoop到节点、运行Hadoop以及解决遇到的问题。在配置过程中,强调了core-site.xml、hdfs-site.xml、mapred-site.xml和yarn-site.xml等文件的修改,并提醒注意URI权限问题和NameNode格式化时的目录路径设置。
摘要由CSDN通过智能技术生成

 完全分布式集群搭建

这是第一大部分

Hadoop官方地址:http://hadoop.apache.org/

安装配置jdk1.8

进入jdk目录
whj@whj:~$ vim /etc/profile

  1 # /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
  2 # and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
  3 export JAVA_HOME=/home/whj/jdk/jdk-8u171-linux-x64/jdk1.8.0_171
  4 export HADOOP_HOME=~/hadoop-2.7.6
  5  export HADOOP_INSTALL=$HADOOP_HOME
  6  export HADOOP_MAPRED_HOME=$HADOOP_HOME
  7  export HADOOP_COMMON_HOME=$HADOOP_HOME
  8  export HADOOP_HDFS_HOME=$HADOOP_HOME
  9  export YARN_HOME=$HADOOP_HOME
 10  export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
 11  export PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
 12 if [ "${PS1-}" ]; then
 14   if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
 15     # The file bash.bashrc already sets the default PS1.
 16     # PS1='\h:\w\$ '
 17     if [ -f /etc/bash.bashrc ]; then
 18       . /etc/bash.bashrc
 19     fi
 20   else
 21     if [ "`id -u`" -eq 0 ]; then
 22       PS1='# '



3设置ssh免秘钥(一会写)

四安装hadoop

tar zxvf hadoop-2.7.6.tar.gz -C /home/whj
 

这是第二大部分 配置hadoop

2.1 修改core-site.xml

 <!-- Put site-specific property overrides in this file. -->
 18 
 19 <configuration>
 20 
 21      <property>
 22      <name>fs.defaultFS</name>
 23          <value>hdfs://whj:9000</value>
 24      </property>
 25         <property>
 26         <name>dfs.datanode.data.dir</name>
 27         <value>/home/whj/hadoop-2.7.6/tmp/</value>
 28         </property>
 29      <property>
 30      <name>hadoop.tmp.dir</name>
 31      <value>/home/whj/hadoop-2.7.6/tmp</value>
 32      </property>
 33 </configuration>
core-site.xml                                                 33,1          底端


2.2 修改hadoop-env.sh

94 export HADOOP_PID_DIR=${HADOOP_PID_DIR}
 95 export HADOOP_SECURE_DN_PID_DIR=${HADOOP_PID_DIR}
 96 
 97 # A string representing this instance of hadoop. $USER by default.
 98 export HADOOP_IDENT_STRING=$USER
 99 export JAVA_HOME=~/jdk/jdk-8u171-linux-x64/jdk1.8.0_171
100 export  HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB    _NATIVE_DIR"
hadoop-env.sh                                                 100,1         底端


2.3 修改hdfs-site.xml

17 <!-- Put site-specific property overrides in this file. -->
 18 
 19 <configuration>
 20     <property>
 21         <name>dfs.replication</name>
 22         <value>1</value>
 23     </property>
 24 
 25     <property>
 26         <name>dfs.namenode.secondary.http-address</name>
 27         <value>whj:50090</value>
 28     </property>
 29 </configuration>

2.4修改slaves

 1 whj@whj

2.5 修改mapred-env.sh

19 export JAVA_HOME=~/jdk/jdk-8u171-linux-x64/jdk1.8.0_171

两个之间加

2.6 修改mapred-site.xml


  1 <configuration>
  2 
  3     <property>
  4      <name>mapreduce.framework.name</name>
  5      <value>yarn</value>
  6     </property>
  7 </configuration>

2.7 修改yarn-env.sh

17 export HADOOP_YARN_USER=${HADOOP_YARN_USER:-yarn}
 18 
 19 # resolve links - $0 may be a softlink
 20 export YARN_CONF_DIR="${YARN_CONF_DIR:-$HADOOP_YARN_HOME/conf}"
 21 
 22 # some Java parameters
 23 # export JAVA_HOME=/home/y/libexec/jdk1.6.0/
 24 if [ "$JAVA_HOME" != "" ]; then
 25   #echo "run java in $JAVA_HOME"
 26   JAVA_HOME=~/jdk/jdk-8u171-linux-x64/jdk1.8.0_171

2.8 修改yarn-site.xml


 20      <property>
 21         <name>yarn.nodemanager.aux-services</name>
 22         <value>mapreduce_shuffle</value>
 23      </property>
 24 
 25      <property>
 26         <name>yarn.resourcemanager.hostname</name>
 27         <value>node22</value>
 28      </property>
 29 </configuration>
 30 

 

2.9分发hadoop到节点

(没动)

2.10 配置环境变量

sudo vim /etc/profile

 3 export JAVA_HOME=/home/whj/jdk/jdk-8u171-linux-x64/jdk1.8.0_171
  4 export HADOOP_HOME=~/hadoop-2.7.6
  5  export HADOOP_INSTALL=$HADOOP_HOME
  6  export HADOOP_MAPRED_HOME=$HADOOP_HOME

7  export HADOOP_COMMON_HOME=$HADOOP_HOME
  8  export HADOOP_HDFS_HOME=$HADOOP_HOME
  9  export YARN_HOME=$HADOOP_HOME
 10  export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
 11  export PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

//进入hadoop安装目录
cd $HADOOP_HOME
//初始化namenode
hdfs namenode -format
//启动hdfs
sbin/start-dfs.sh 
//启动yarn
sbin/start-yarn.sh

7 export HADOOP_COMMON_HOME=$HADOOP_HOME 8 export HADOOP_HDFS_HOME=$HADOOP_HOME 9 export YARN_HOME=$HADOOP_HOME 10 export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native 11 export PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin 12

这是头部

 37 export  HADOOP_HOME=~/hadoop-2.7.6
 38 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

这是尾部 解决后期报错

source /etc/profile

刷新变量

这是第三大部分 运行hadoop

//进入hadoop安装目录
cd $HADOOP_HOME
//初始化namenode
hdfs namenode -format
//启动hdfs
sbin/start-dfs.sh 
//启动yarn
sbin/start-yarn.sh

里面能sudo就sudo该yes就yes

这个界面就ojbk

出现很多比如ava.lang.IllegalArgumentException: URI has an authority component这样的一会再说解决办法,之前提到的警告就是这里会出现的,之前做好这边就没有了,因为原因什么格式,可以百度

这是第四大部分 解决问题

netstat -ant | grep 50070 查看有没有这个进程

sudo ufw disable  关闭防火墙
sudo chmod 777 /etc/hosts  先修改一下host权限,因为你需要改一下

我的host

jps
9584 Jps
4182 DataNode
9129 NodeManager
8253 NameNode
出现这些就对了 

w1

在执行name node格式化(hdfs namenode -format)的时候,出现了以下无法启动NameNode的错误,研究了很久,,终于知道原因是core-site的文件配置中 tmp 的目录路径写错了,没有tmp就在目录下创建,新版已经没有tmp了

w2

启动Hadoop报错:slave1: datanode running as process 2477. Stop it first.
解决方法:
   进程已经在运行中了,在bin模流下执行 $./stop-all.sh
   然后再执行  $./start-all.sh

w3

java.lang.IllegalArgumentException: URI has an authority component
at java.io.File.<init>(File.java:423)at org.apache.hadoop.hdfs.server.namenode.NNStorage.getStorageDirectory(NNStorage.java:329)at org.apache.hadoop.hdfs.server.namenode.FSEditLog.initJournals(FSEditLog.java:276)at org.apache.hadoop.hdfs.server.namenode.FSEditLog.initJournalsForWrite(FSEditLog.java:247)at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:985)at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1429)at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1554)
出现这个错误


仿照这个,是因为你的/

当然如果你是完全分布式一定要去掉file,伪分布式可以这样

还有最好使用绝对路径

w4

3.1安装后会一直提示错误“WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable ”

export  HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

把相同配置添加到hadoop-env.sh文件末尾。


w5

hadoop Live Nodes :0
 对于这些网上的说法已经很多了,主要包括:
1 关闭safemode模式,输入如下命令:
bin/hadoop dfsadmin -safemode leave
2 检查存储空间是否足够,输入如下命令:
df -hl
3 重新格式化hdfs,按照如下步骤
a) 删除master和所有slave上的 hadoop目录下的logs文件,并重新建立
b) 删除master和所有slave上的hdfs存储目录,即conf/core-site.xml配置文件中  hadoop.tmp.dir属性对应的value所指向的目录,并重新建立
4 检查防火墙是否关闭,输入下面命令查看状态:
service iptables status
输入下面命令关闭防火墙
service iptables stop
5 重新检查配置文件
不过上述方法都用过了,依然没有解决问题,下面一点是如何解决了该问题的操作。
检查每台机器上的/etc/hosts文件,将没有用或不清楚作何用的ip:name对删除,最后只留下了
[root@hadoop1 hadoop]# cat /etc/hosts
127.0.0.1   localhost
192.168.17.205 Master
192.168.17.206 hadoop1
192.168.17.207 hadoop2


第五大部分 结论

感悟:环境很好搭建,但是出错原因也会很多,希望大佬多提提建议

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值