hadoop2.7.3伪分布式环境搭建详细安装过程

hadoop的安装

新建hadoop目录,并创建source文件夹用来存放相关的软件。

mkdir /opt/hadoop
mkdir /opt/hadoop/source

# 解压安装
tar -xzvf /usr/local/hadoop-2.7.3.tar.gz
#将解压后的文件夹移动到 hadoop目录下
mv hadoop-2.7.3 /opt/hadoop

配置环境变量

编辑配置文件

vim /etc/profile

#添加如下内容

#HADOOP
export HADOOP_HOME=/opt/hadoop/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
# hadoop data direcotory
export HADOOP_DATA_DIR=/mnt/hdfs
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

#使配置文件生效
source /etc/profile

#更改文件所有者
chown hadoop $HADOOP_HOME

建立数据存储目录namenode和datanode

环境变量HADOOP_DATA_DIR=/mnt/hdfs

#建立目录
mkdir $HADOOP_DATA_DIR/namenode
mkdir $HADOOP_DATA_DIR/datanode

#更改文件所有者
chown hadoop /mnt/hdfs/namenode
chown hadoop /mnt/hdfs/datanode

修改hadoop配置文件

进入相应的路径

cd /opt/hadoop/hadoop-2.7.3/etc/hadoop

对要修改的文件进行备份

cp core-site.xml core-site.xml.bak
cp hdfs-site.xml hdfs-site.xml.bak
cp yarn-site.xml yarn-site.xml.bak
cp hadoop-env.sh hadoop-env.sh.bak
cp mapred-site.xml.template mapred-site.xml

修改hadoop-env.sh

# 将变量改成常量即路径!!!不然会找不到JAVA_HOME
export JAVA_HOME=$JAVA_HOME //默认
export JAVA_HOME=/opt/IBM/WebSphere/AppServer/java //改成java安装路径

**修改core-site.xml **
在<configuration></configuration>增加hdfs的端口信息
增加的内容如下:

<property> 
  <name>fs.default.name</name> 
  <value>hdfs://localhost:9000</value>
</property> 

<property>
<!-- 设置每个节点临时文件目录 --> 
  <name>hadoop.tmp.dir</name> 
<!-- 当前用户须要对此目录有读写权限,启动集群时自动创建 -->
  <value>/home/tmp</value>    
</property> 

修改hdfs-site.xml
在<configuration></configuration>增加以下内容:

<property>
<!-- 设置数据的备份数为1--> 
 <name>dfs.replication</name>
 <value>1</value> 
</property> 

<property>
 <name>dfs.namenode.dir</name>
 <value>file:/mnt/hdfs/namenode</value> 
</property> 

<property>
 <name>dfs.datanode.dir</name>
 <value>file:/mnt/hdfs/datanode</value> 
</property>

修改mapred-site.xml文件

<property>
 <name>mapreduce.framework.name</name>
 <value>yarn</value> 
</property>

修改yarn-site.xml文件
在<configuration></configuration>增加以下内容:

<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>

启动hadoop

  1. 格式化namenode
    hadoop namenode -format
  2. 启动所有hadoop守护进程
    start-all.sh
  3. 查看守护进程是否全部启动
    jps

hadoop全部守护进程启动应该有5个,如下:


遇到的错误

注意:
在搭建过程中遇到报错一定要去查看日志,然后再去解决问题,会事半功倍。错误日志所在目录为:hadoop的安装路径/logs

Could not find the main class

hadoop格式化时报错org.apache.hadoop.hdfs.server.namenode.NameNode。。。
我这里是由于之前安装过cognos,java环境变量设置的是cognos的自带java环境。
解决办法

  1. 下载java
    yum install java*
    下载完成后可以看到下载了多个java版本,从1.5到1.7。这里我们选择使用1.7版本。
  2. 利用linux下的多版本管理软件alternatives来实现jdk的版本更改
    在/usr/lib/jvm文件夹下时间存储了各个jdk版本的软件,而alternatives正是通过修改它的java引用达到版本切换的目的。
  3. 使用alternatives实现版本切换
  • 查看相应的jdk是否在redhat的jdk菜单里。并选择序号,回车即可;
    update-alternatives --config java
    update-alternatives --config javac


  1. java -version,javac -version查看当前jdk版本
  2. 如果java版本没有进行更改,则需要在环境变量path中添加选择的java变量。
    通过如下命令可以在$PATH的开始或末尾添加jdk的环境变量(bin目录下保存了java, javac, javah等可执行命令)
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk.x86_64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

由于执行的时候总是从$PATH的开始搜索可执行文件的位置,所以如果环境变量中已经设置了一个jdk,那么把新的jdk设置在PATH的开始才会有用。

No route to host

jps发现少了nodemanager,于是查看日志文件hadoop-root-datanode-cognos.log
发现报了一下错误:


解决办法
先检查防火墙是否关闭。是关闭的。然后检查hosts,发现ip地址出错了。进行更改。

DataNode: Initialization failed for Block pool

格式化并启动所有进程后没有datanode进程
查看datanode日志发现

#java.io.IOException: Incompatible clusterIDs in /home/tmp/dfs/data: namenode clusterID = CID-07c55851-43ac-4c60-8920-4222ebdae886; datanode clusterID = CID-f3af4a31-2c73-4a0d-a6f0-8e1d310df111
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:775)
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadStorageDirectory(DataStorage.java:300)
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadDataStorage(DataStorage.java:416)
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.addStorageLocations(DataStorage.java:395)
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:573)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1362)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1327)
    at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:317)
    at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:223)
    at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:802)
    at java.lang.Thread.run(Thread.java:744)
#2017-01-11 09:20:00,862 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to cognos/172.16.7.191:9000. Exiting. 
#java.io.IOException: All specified directories are failed to load.

这是由于datanode的clusterID 和 namenode的clusterID 不匹配造成的。
造成这个原因的操作是我刚开始配置core-site.xml的时候,hdfs的value配置的是:hdfs://localhost:9000。而后来我又改成了hdfs://172.16.7.191:9000。这导致在两次执行格式化操作的时候datanode的clusterID 和 namenode的clusterID 不匹配。

解决办法

  1. 将/home/tmp/dfs/data/current目录里的version文件的clusterID替换成/home/tmp/dfs/name/current目录下的version文件里的clusterID
  2. 执行重启操作 start-dfs.sh 然后用 jps命令查看 就可以看到namenode已被启动

参考文章:
jdk版本切换
通过web端口查看主节点、slave1节点及集群运行状态

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容