Hadoop2.x的配置
NN和ZKFC配套
DN和DM配套
安装部署hadoop2.x
1、下载64位hadoop2.5
首先我们要下载到64位的Linux的hadoop-2.5的tar包,官网上的是32位的,我们需要的是64位的
详情参考
http://www.douban.com/note/393721422/
2、解压tar包
吧1.2删除就可以了
然后我们进行2.5的配置
配置文件在这个目录下
修改我们的配置文件
保存文件
然后我们修改hdfs-site.xml
在这个里面配置一个命名服务
根据我们前面的表格namenode分别是hadoop1和node1
最终改为
<configuration>
<!-- 配置一个命名服务 -->
<property>
<name>dfs.nameservices</name>
<value>cutter_point</value>
</property>
<!-- 配置所有的namenode的名字 -->
<property>
<name>dfs.ha.namenodes.cutter_point</name>
<value>nn1,nn2</value> <!-- 这只是一个名字不是主机名 -->
</property>
<property>
<name>dfs.namenode.rpc-address.cutter_point.nn1</name>
<value>hadoop1:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.cutter_point.nn2</name>
<value>node1:8020</value>
</property>
<!-- http协议的端口和主机 -->
<property>
<name>dfs.namenode.http-address.cutter_point.nn1</name>
<value>hadoop1:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.cutter_point.nn2</name>
<value>node1:50070</value>
</property>
<!-- 配置日志主机JN -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node1:8485;node2:8485;node3:8485/cutter_point</value>
</property>
<!-- 客户端找到这个类 -->
<property>
<name>dfs.client.failover.proxy.provider.cutter_point</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- ssh fencing -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_dsa</value>
</property>
<!-- JN的工作目录 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/jn/data</value>
</property>
<!-- 自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
</configuration>
然后我们配置core-site.xml文件
下一个是安装zookeeper
我们下载3.4.6稳定版的,然后解压
我们copy一份zoo_sample.cfg 名字叫zoo.cfg
改一下这个文件
在末尾添加
The entries of the form server.X list the servers that make up the ZooKeeper service. When the server starts up, it knows which server it is by looking for the file myid in the data directory. That file has the contains the server number, in ASCII.
后面的开始式我们的主机名
接着我们创建一个文件夹
在zookeeper文件夹里面
我们创建一个文件叫myid
然后我们把zookeeper这个文件夹传输到其他各个节点
修改其他节点的id号
吧zookeeper文件夹传输到其他的两个节点
其他两个节点也设置相应的软链接
长度的配置zookeeper的环境变量
进入到相应的目录,得到相应的路径
修改环境变量
传输到其他的节点上
启动zookeeper
出现QuorumPeerMain说明配置OK
配置slaves,我们的datanode节点
吧tar包传输到其他的节点上
在其他节点上进行如下操作
配置文件传输到其他的节点下面
试运行
在相应的JN上运行,参考最上面的表
在node1,node2,node3上的hadoop-2.5下的sbin下面执行
./hadoop-daemon.sh start journalnode
• If you are setting up a fresh HDFS cluster, you should first run the format command (hdfs namenode -format) on one of NameNodes.
在一个namenode上执行一个相应的格式化命令
./ hdfs namenode -format
格式化成功
启动namenode在刚刚格式化的那个namenode主机上
在没有格式化的主机上执行
unformatted NameNode by running the command “hdfs namenode -bootstrapStandby” on the unformatted NameNode
启动
接下来可以启动两个namenode了
首先我们停止所有的服务
在第一个namenode上
Zookeeper不要关闭,其他的关闭就可以了
然后我们格式化zkfc
然后我们在吧hdfs启动
成功
启动全部
Start-dfs.sh
**
报错:
**
1、15/06/29 10:13:16 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
mkdir: Incomplete HDFS URI, no host: hdfs://cutter_point
hadoop里面配置的主机host名称不能带下划线
2、2015-06-29 15:08:03,244 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool (Datanode Uuid unassigned) service to hadoop1/192.168.100.10:8020. Exiting.
java.io.IOException: Incompatible clusterIDs in /opt/hadoop2/dfs/data: namenode clusterID = CID-992e7f49-973b-4107-b599-77c4f6b7b867; datanode clusterID = CID-6f69cef1-7e49-4bb5-99b5-5aed447024c7
at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:477)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:226)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:254)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:975)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:946)
at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:278)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:220)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:812)
at java.lang.Thread.run(Thread.java:745)
解决办法:
1、在hdfs-site.xml配置文件中,配置了dfs.namenode.name.dir,在master中,该配置的目录下有个current文件夹,里面有个VERSION文件,内容如下:
#Thu Mar 13 10:51:23 CST 2014
namespaceID=1615021223
clusterID=CID-8e201022-6faa-440a-b61c-290e4ccfb006
cTime=0
storageType=NAME_NODE
blockpoolID=BP-1257313099-10.10.208.38-1394679083528
layoutVersion=-40
2、在core-site.xml配置文件中,配置了hadoop.tmp.dir,在slave中,该配置的目录下有个dfs/data/current目录,里面也有一个VERSION文件,内容
#Wed Mar 12 17:23:04 CST 2014
storageID=DS-414973036-10.10.208.54-50010-1394616184818
clusterID=clustername
cTime=0
storageType=DATA_NODE
layoutVersion=-40
3、一目了然,两个内容不一样,导致的。删除slave中的错误内容,重启,搞定!
全文畅读:http://www.thebigdata.cn/Hadoop/9239.html