Hadoop2.7.5分布式集群搭建

Hadoop2.7.5分布式集群搭建

1 服务器信息

2 关闭iptable与selinux
service iptables stop
chkconfig iptables off
chkconfig iptables --list

vi /etc/sysconfig/selinux
----------------------------------------
SELINUX=disabled

3 配置hosts文件
vi /etc/hosts
-----------------------------------------------
192.168.1.101   hadoop1
192.168.1.102   hadoop2
192.168.1.103   hadoop3
192.168.1.104   hadoop4
192.168.1.105   hadoop5

4 配置JDK
vi /etc/profile
hadoop1/hadoop2环境变量
----------------------------------------------
export JAVA_HOME=/app/jdk1.8.0_161
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/app/hadoop-2.7.5
export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
hadoop3/hadoop4/hadoop5环境变量
--------------------------------------------
export JAVA_HOME=/app/jdk1.8.0_161
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/app/hadoop-2.7.5
export ZOOKEEPER_HOME=/app/zookeeper
export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin:$PATH
执行命令:source /etc/profile刷新环境变量

5 配置ssh无密码登录
    ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa      --在所有节点执行   

    vi /etc/authorized_keys

    -------------------------------------------

    将5台服务器的id_dsa.pub文件内容添加到新文件authorized_keys

6 创建相关目录
mkdir -p /data/hadoop/tmp
mkdir -p /data/hadoop/journal
mkdir -p /data/hadoop/hdfs/name
mkdir -p /data/hadoop/hdfs/data
mkdir -p /data/zookeeper/data

7 修改hadoop-env.sh/配置文件
vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh
vi $HADOOP_HOME/etc/hadoop/mapred-env.sh
vi $HADOOP_HOME/etc/hadoop/yarn-env.sh
添加jdk环境变量
--------------------------------
export JAVA_HOME=/app/jdk

8 修改core-site.xml配置文件
vi $HADOOP_HOME/etc/hadoop/core-site.xml
--------------------------------
<configuration>  
<!--指定hdfs的nameService1节点URL地址 -->  
<property>  
  <name>fs.defaultFS</name>  
  <value>hdfs://ns1</value>  
</property>  
<!-- Hadoop的运行时文件存放路径 -->
<property>  
   <name>hadoop.tmp.dir</name>  
   <value>/data/hadoop/tmp</value>  
</property>  
<!-- Zookeeper地址 -->  
<property>  
   <name>ha.zookeeper.quorum</name>  
   <value>hadoop3:2181,hadoop4:2181,hadoop5:2181</value>  
</property>  
<property>  
       <name>io.file.buffer.size</name>  
       <value>131072</value>  
</property>    
</configuration>  

8 修改hdfs-site.xml配置文件
vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml
--------------------------------
<configuration>    
<property>  
   <name>dfs.nameservices</name>  
   <value>ns1</value>  
</property>  
<property>  
   <name>dfs.ha.namenodes.ns1</name>  
   <value>nn1,nn2</value>  
</property>   
<property>  
   <name>dfs.namenode.rpc-address.ns1.nn1</name>  
   <value>hadoop1:8020</value>  
</property> 
<property>  
   <name>dfs.namenode.rpc-address.ns1.nn2</name>  
   <value>hadoop2:8020</value>     
<property>  
   <name>dfs.namenode.http-address.ns1.nn1</name>  
   <value>hadoop1:50070</value>  
</property>   
<property>  
   <name>dfs.namenode.http-address.ns1.nn2</name>  
   <value>hadoop2:50070</value>  
</property>     
<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->  
<property>  
   <name>dfs.namenode.shared.edits.dir</name>  
   <value>qjournal://hadoop3:8485;hadoop4:8485;hadoop5:8485/ns1</value> 
</property>  
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->  
<property>  
   <name>dfs.journalnode.edits.dir</name>  
   <value>/data/hadoop/journal</value>  
</property>      
<!-- 开启NameNode失败自动切换 -->  
<property>  
   <name>dfs.ha.automatic-failover.enabled</name>  
   <value>true</value>  
</property>  
<!-- 配置失败自动切换实现方式 -->  
<property>  
   <name>dfs.client.failover.proxy.provider.ns1</name>  
   <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>  
</property>  
<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行 -->  
<property>  
   <name>dfs.ha.fencing.methods</name>  
   <value>sshfence</value>  
</property>  
<!-- 使用sshfence隔离机制时需要ssh免登陆 -->  
<property>  
   <name>dfs.ha.fencing.ssh.private-key-files</name>  
   <value>/root/.ssh/id_dsa</value>  
</property>  
<!-- 配置sshfence隔离机制超时时间 -->  
<property>  
   <name>dfs.ha.fencing.ssh.connect-timeout</name>  
   <value>30000</value>  
</property>  
<property>
   <name>dfs.replication</name>
   <value>3</value>
</property>
<!-- nameNode与datanode 存储目录--> 
<property>  
   <name>dfs.namenode.name.dir</name>  
   <value>file:///data/hadoop/hdfs/name</value>  
</property> 
<property>  
   <name>dfs.datanode.data.dir</name>  
   <value>file:///data/hadoop/hdfs/data</value>  
</property> 
</configuration>

9 修改mapred-site.xml配置文件
vi $HADOOP_HOME/etc/hadoop/mapred-site.xml
----------------------------------
<configuration>  
<!-- 指定Hadoop的MapReduce运行在YARN环境 -->  
<property>  
<name>mapreduce.framework.name</name>  
<value>yarn</value>  
</property>

<!-- MapReduce JobHistory Server --> 
<property>  
<name>mapreduce.jobhistory.address</name>  
<value>hadoop1:10020</value>  
</property>  
<property>  
<name>mapreduce.jobhistory.webapp.address</name>  
<value>hadoop1:19888</value>  
</property>
</configuration>

10 修改yarn-site.xml配置文件
vi $HADOOP_HOME/etc/hadoop/yarn-site.xml
----------------------------------
<configuration>  
<!-- NodeManager获取数据方式:shuffle -->  
<property>  
<name>yarn.nodemanager.aux-services</name>  
<value>mapreduce_shuffle</value>  
</property> 
<!-- yarn HA--> 
<property>
<name>yarn.resourcemanager.ha.enabled</name>
   <value>true</value>
</property>
<property>
   <name>yarn.resourcemanager.cluster-id</name>
   <value>cluster1</value>
</property>
<property>
   <name>yarn.resourcemanager.ha.rm-ids</name>
   <value>rm1,rm2</value>
</property>
<property>
   <name>yarn.resourcemanager.hostname.rm1</name>
   <value>hadoop1</value>
</property>
<property>
   <name>yarn.resourcemanager.hostname.rm2</name>
   <value>hadoop2</value>
</property>
<property>
   <name>yarn.resourcemanager.webapp.address.rm1</name>
   <value>hadoop1:8088</value>
</property>
<property>
   <name>yarn.resourcemanager.webapp.address.rm2</name>
   <value>hadoop2:8088</value>
</property>
<property>
   <name>yarn.resourcemanager.zk-address</name>
   <value>hadoop3:2181,hadoop4:2181,hadoop5:2181</value>
</property>  
<property>
   <name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
   <value>ture</value>
</property>     
</configuration>

11 修改slaves配置文件
vi $HADOOP_HOME/etc/hadoop/slaves
----------------------------------
hadoop3
hadoop4
hadoop5

12 zookeeper配置
vi $ZOOKEEPER_HOME/conf/zoo.cfg
----------------------------
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
clientPort=2181
server.3 = hadoop3:2888:3888
server.4 = hadoop4:2888:3888
server.5 = hadoop5:2888:3888

服务器标识配置
vi /data/zookeeper/data/myid --创建文件myid并填写内容为3
--把hadoop4、hadoop5中的myid文件里的值修改为4和5

13 HDFS HA初始化
1] 在hadoop3、hadoop4、hadoop5服务器启动zk与journalnode
zkServer.sh start
zkServer.sh status
hadoop-daemon.sh start journalnode

2] 主namenode节点格式化ZK,创建命名空间
hdfs zkfc -formatZK
打开Hadoop4服务器zookeeper客户端,查看是否存在hadoop-ha节点
执行命令:zkCli.sh
查看节点命令:ls  /

3] 在主namenode节点格式化namenode和journalnode目录
hdfs namenode -format ns1

4] 在主namenode节点启动namenode进程
hadoop-daemon.sh start namenode

5] 在备namenode节点,把备namenode节点的目录格式化并把元数据从主namenode节点同步过来
hdfs namenode -bootstrapStandby
hadoop-daemon.sh start namenode --启动备namenode

6] 在两个namenode节点启动zkfc
hadoop-daemon.sh start zkfc

7] 在所有datanode节点启动datanode
hadoop-daemon.sh start datanode

8] HDFS HA状态
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2

9] 启动yarn
start-yarn.sh --主namenode执行
yarn-daemon.sh start resourcemanager --备namenode执行

10] yarn HA状态
yarn rmadmin -getServiceState rm1
yarn rmadmin -getServiceState rm2

11] 启动历史服务
mr-jobhistory-daemon.sh start historyserver

14 日常启停命令
start-all.sh
stop-all.sh

单独启动:
hadoop-daemon.sh start journalnode  
hadoop-daemon.sh start namenode
hadoop-daemon.sh start zkfc
hadoop-daemon.sh start datanode
yarn-daemon.sh start resourcemanager
yarn-daemon.sh start nodemanager
mr-jobhistory-daemon.sh start historyserver

15 访问Hadoop服务页面
HDFS管理界面:http://192.168.1.101:50070/
YARN管理界面:http://192.168.1.101:8088/
JobHistory管理界面:http://192.168.1.101:19888/

16 验证HDFS - HA主备切换
1] 验证Hadoop1服务器NameNode和Hadoop2服务器NameNode数据文件是否可以共享
在Hadoop1上传文件hosts文件:hdfs dfs -put /etc/hosts /
杀掉Hadoop1 NameNode进程
查看进程:jps
在Hadoop2查看hosts文件:hdfs dfs -ls /hosts

17 测试运行MapReduce Job
1] 创建输入HDFS目录
hdfs dfs -mkdir -p /wordcountdemo/input
2] 创建原始文件
vi /app/wc.input内容如下
----------------------------------------
hadoop mapreduce hive
hbase spark storm
sqoop hadoop hive
spark hadoop
---------------------------------------
3] 将wc.input文件上传到HDFS的/wordcountdemo/input目录中
hdfs dfs -put /app/wc.input /wordcountdemo/input
4] 运行WordCount MapReduce Job
bin/yarn jar /app/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /wordcountdemo/input /wordcountdemo/output
--输出目录不能创建,yarn会自动创建
5] 查看输出结果目录
hdfs dfs -ls /wordcountdemo/output
6] 查看输出文件内容

hdfs dfs -cat /wordcountdemo/output/part-r-00000


阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭