第一次部署过程中遇到了很多的问题,查了很多资料和官方文档,下面贴出部署的主要过程和配置文件

1.我搭建的是完全分布式,四个虚拟机相当于四台电脑。搭建好虚拟机后关掉防火墙,防止防火墙与我们后续即将使用的一些端口号起冲突。

2.配置虚拟机的IP地址,在/etc/sysconfig/network-scripts/ifcfg-eth0下配置(具体配置网上很多),配置完后,用ping命令试下是否成功。

3.在/etc/hosts下配置斯台主机的IP和hostname,这是用于将来的机器之间互相传输数据使用的,配置完也要用ping命令试下


10.33.0.100

Node1.Hadoop

10.33.0.101

Node2.Hadoop

10.33.0.102

Node3.Hadoop

10.33.0.104

Node4.Hadoop

4.接下来是ssh的免密码登录,首先在本地(Node1.Hadoop)上输入命令,ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa,

生成两个无密码秘钥对id_rsa  和id_rsa.pub,然后把id_rsa.pub的内容追加到authorized_keys里面,本地的无密

码登陆就完成了.用ssh命令尝试连接看是否成功.接下来配置与其他机器的无密码连接,首先把本机(Node1.Hadoop)

刚生成公钥拷贝到其他的机器下,然后把拷贝的公钥追加到authorized_keys里面,接下来在刚才的本机(Node1.Hadoop)用ssh连接刚才拷贝公钥的机器,看是否配置成功,一般只要配置namenode和其他节点就可以了,不需要每台机器之间都能无密码连接.

5.然后现在可以安装jdk,配置他的环境变量.这与在Windows下的配置基本一样.首先找到安装的位置,建立一个Java文件夹,然后将经jdk拷贝过来,我的是rpm格式,直接利用命令

rpm -ivh jdk安装.安装完毕后在/etc/profile下配置Java的环境变量,配置完毕后利用 source /etc/profile 使配置文件生效.利用Java javac命令查看是否配置成功。jps也要试下,这是在hadoop配置中很重要的一个命令.

  6.接下来就是配置我们的hadoop-2.5.2,将你的hadoop解压后,建立软链 ln -sf hadoop目录 /你想要的目录,在hadoop目录下配置你的配置文件,我的配置文件如下

/home/hadoop-2.5/etc/hadoop/hdfs-site.xml 

<span style="font-size:18px;"> </span><pre name="code" class="html"><span style="font-size:18px;"><configuration>
<property>
  <name>dfs.nameservices</name>
  <value>lxj</value>
</property>
<property>
  <name>dfs.ha.namenodes.lxj</name>
  <value>nn1,nn2</value>
</property></span>
<span style="font-size:18px;"><!--配置namenode-->
<property>
  <name>dfs.namenode.rpc-address.lxj.nn1</name>
  <value>Node1.Hadoop:9000</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.lxj.nn2</name>
  <value>Node4.Hadoop:9000</value>
</property></span>
<span style="font-size:18px;"><!--配置namenode的http地址,用于web访问-->
<property>
  <name>dfs.namenode.http-address.lxj.nn1</name>
  <value>Node1.Hadoop:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.lxj.nn2</name>
  <value>Node4.Hadoop:50070</value>
</property></span>
<span style="font-size:18px;"><!--配置journalnode-->
<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://Node2.Hadoop:8485;Node3.Hadoop:8485;Node4.Hadoop:8485/lxj</value>
</property></span>
<span style="font-size:18px;"><!--<span style="line-height: 15.59375px; background-color: rgb(230, 236, 249);"><span style="font-family:SimSun;">DFS Client确定NameNode的是当前的激活--></span></span>
<property>
  <name>dfs.client.failover.proxy.provider.lxj</name>
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property></span>
<span style="font-size:18px;"><!--namenode故障时切换的方法-->
<property>
  <name>dfs.ha.fencing.methods</name>
  <value>sshfence</value>
</property></span>
<span style="font-size:18px;"><!--namenode故障时切换要利用ssh私钥-->
<property>
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/root/.ssh/id_rsa</value>
</property></span>
<span style="font-size:18px;"><!--文件夹自己建-->
<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>
 
<property>  
  <name>dfs.image.transfer.bandwidthPerSec</name>  
  <value>1048576</value>  
</property>   

<property>
  <name>dfs.permissions</name>
  <value>false</value>
</property>
</span>





/home/hadoop-2.5/etc/hadoop/hadoop-env.sh 在这个下面只需要配置Java_Home

/home/hadoop-2.5/etc/hadoop/core-site.xml配置zookeeper和hadoop数据的目录

<span style="font-size:18px;"><configuration>
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://lxj</value>
</property></span>
<span style="font-size:18px;"><!--zookeeper配置-->
<property>
   <name>ha.zookeeper.quorum</name>
   <value>Node1.Hadoop:2181,Node3.Hadoop:2181,Node4.Hadoop:2181</value>
 </property></span>
<span style="font-size:18px;"><!--hadoop临时目录-->
<property>
  <name>hadoop.tmp.dir</name>
  <value>/opt/hadoop-2.5</value>
</property>

<property>  
  <name>ha.failover-controller.cli-check.rpc-timeout.ms</name>  
  <value>60000</value>  
</property>  
<property>  
  <name>ipc.client.connect.timeout</name>  
  <value>60000</value>  
</property> 

</configuration>
</span>


在/home/hadoop-2.5/etc/hadoop/slaves里面配置你的DataNode

Node2.Hadoop

Node3.Hadoop

Node4.Hadoop

7.接下来配置zookeeper

解压zookeeper后,建立软链.

然后在zookeeper的配文件夹里/home/zookeeper3.4.6/conf/  复制zoo_sample.cfg 并重命名为zoo.cfg在这里面配置zookeeper的数据缓存目录和zookeeper在哪个节点上

server.1=Node1.Hadoop:2888:3888
server.3=Node3.Hadoop:2888:3888
server.4=Node4.Hadoop:2888:3888
在zookeeper的缓存目录配置myid文件,要自己创建

这台自己是上面server.1上的1就只写个1

8.接下来把配置好的机器上的文件拷贝到其他的节点上.

9.启动zookeeper,zkServer.sh start  

 格式化namenode,hdfs namenode -format(任选一个namenode),格式完毕后启动这个节点的namenode,在另一台没有格式化的namenode的节点上把已经格式化产生元数据的节点上的元数据同步到这个节点上.一定要启动已经格式化的namenode!!!

命令 hdfs namenode -bootstrapStandby(同步数据)

如果是一个非HA集群变为一个HA集群还要利用以下命令

hdfs -initializeSharedEdits

最后格式化ZKFC,在任何一台的namenode节点上hdfs zkfc -formatZK

至此所有配置都已经完毕,利用命令stop-dfs.sh停止集群,然后在利用start-dfs.sh重启集群。利用jps命令在每个节点下查看进程的启动情况。(如有错误,敬请指出!)



分布式部署kafka_Hadoop

分布式部署kafka_zookeeper_02

分布式部署kafka_分布式_03