完全分布式集群搭建
这是第一大部分
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
第五大部分 结论
感悟:环境很好搭建,但是出错原因也会很多,希望大佬多提提建议