前期准备工作

1、第一步分别建立ZookeeperC1、2、3。

root用户启动zabbix agent_Hadoop


2、在app11中操作,New terminal.

root用户启动zabbix agent_hadoop_02

3、切换到root用户。

命令:sudo /bin/bash

root用户启动zabbix agent_hdfs_03


4、进入hadoop目录下并查看有哪些文件夹。

命令:cd /hadoop/ls

root用户启动zabbix agent_Hadoop_04


5、运行initHost.sh脚本,进行三台机器的认证。

命令:./initHosts.sh

确保我们的三台机器是running状态。

root用户启动zabbix agent_数据库_05


运行效果:

root用户启动zabbix agent_Hadoop_06


6、切换到hadoop用户下,进入hadoop根目录。

命令:su – hadoopcd /hadoop/

root用户启动zabbix agent_数据库_07


7、启动zookeeper集群。

命令:./startAll.sh

root用户启动zabbix agent_hadoop_08

hadoop环境搭建

安装hadoop安装包

1、在app-11上,切换到hadoop用户。

命令:su - hadoop 注:输入的密码是不显示出来的。

root用户启动zabbix agent_hdfs_09


2、进入hadoop根目录,并查看目录下的文件。

命令:cd /hadoop/

root用户启动zabbix agent_hadoop_10


3、创建一个安装Hadoop的根目录。

命令:mkdir Hadoop

root用户启动zabbix agent_数据库_11


4、进入到Hadoop目录下。

命令:cd Hadoop/

root用户启动zabbix agent_Hadoop_12


5、下载hadoop安装包。

命令:wget https://archive.apache.org/dist/hadoop/common/hadoop-3.1.2/hadoop-3.1.2.tar.gz

root用户启动zabbix agent_数据库_13


6、解压安装包。

命令:tar -xf hadoop-3.1.2.tar.gz

root用户启动zabbix agent_hdfs_14


7、进入到/tmp目录下。

命令:cd /tmp/

root用户启动zabbix agent_hadoop_15


8、通过GitHub下载Spark-stack。

命令:git clone https://github.com/haiye1018/Spark-stack

root用户启动zabbix agent_hdfs_16


9、进入Spark-stack/目录下。

命令:cd Spark-stack/

root用户启动zabbix agent_数据库_17


10、 进入Hadoop目录下。

命令:cd Hadoop/

root用户启动zabbix agent_数据库_18


11、 将conf拷贝到hadoop-3.1.2/etc/hadoop目录下,并查看是否成功。

命令:cp conf/* /hadoop/Hadoop/hadoop-3.1.2/etc/hadoop/cat /hadoop/Hadoop/hadoop-3.1.2/etc/hadoop/workers

root用户启动zabbix agent_数据库_19


12、在环境变量中加入hadoop和HADOOP_HOME路径。

命令:vi ~/.bashrc

export HADOOP_HOME=/hadoop/Hadoop/hadoop-3.1.2

exporPATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${HADOOP_HOME}/lib:$PATH

root用户启动zabbix agent_hdfs_20


13、将设置的环境变量生效。

命令:source ~/.bashrcecho $PATH

root用户启动zabbix agent_hadoop_21

将hadoop安装包拷贝集群中的另两台机器上

14、先创建安装的根目录。

命令:ssh hadoop@app-12 "mkdir /hadoop/Hadoop"sshhadoop@app-13 "mkdir /hadoop/Hadoop"

root用户启动zabbix agent_Hadoop_22


15、将环境变量拷贝到集群的另外两个机器上。

命令:scp ~/.bashrc hadoop@app-12:~/scp ~/.bashrchadoop@app-13:~/

root用户启动zabbix agent_Hadoop_23


16、 将改好的安装包拷贝到集群的另外两个机器上。

命令:scp -r -q hadoop-3.1.2 hadoop@app-12:/hadoop/Hadoopscp -r -q hadoop-3.1.2 hadoop@app-13:/hadoop/Hadoop

root用户启动zabbix agent_Hadoop_24

hadoop初始化工作

17、 需要将所有的journalnode守护进程启动,接下来是用一个循环脚本启动。

命令:for name in app-11 app-12 app-13; do ssh hadoop@$name"hdfs --daemon start journalnode"; done

root用户启动zabbix agent_Hadoop_25


18、 查看journalnode是否启动。

命令:for name in app-11 app-12app-13; do ssh hadoop@$name "jps"; done注:显示的是三个journalnode守护进程,三个zookeeper守护进程。

root用户启动zabbix agent_数据库_26


19、 在app-11namenode上各式化。

命令:hdfs namenode -format注:会打印很多classpath

root用户启动zabbix agent_hdfs_27


20、 因为是两台namenode做ha,需要在另一台机器上拷贝格式化信息,先关闭所有守护进程。

命令:for name in app-11 app-12 app-13; do ssh hadoop@$name "hdfs--daemon stop journalnode"; done

root用户启动zabbix agent_hdfs_28

创建ha节点

21、创建ha主从应用里zookeeper目录树的目录,先登录到客户端查看ha存不存在。

命令:zkCli.sh

root用户启动zabbix agent_hdfs_29


22、 查看客户端下有什么。

命令:ls /

root用户启动zabbix agent_数据库_30


23、 只有一个zookeeper节点,ha节点并不存在,退出。

命令:quit

root用户启动zabbix agent_hdfs_31


24、 zookeeper初始化工作。

命令:hdfs zkfc -formatZK -force注:打印很多的classpath

root用户启动zabbix agent_hadoop_32


25、 再次登录到客户端,查看ha节点存不存在。

命令:zkCli.sh

root用户启动zabbix agent_数据库_33


26、 查看根目录下有什么。

命令:ls /注:这时候有一个hadoop-ha节点

root用户启动zabbix agent_hdfs_34


27、 查看hadoop-ha节点下。

命令:ls /hadoop-ha

root用户启动zabbix agent_hdfs_35


28、 查看dmcluster节点下,dmcluster节点下是空的,dmcluster是ha下的集群。

命令:ls /hadoop-ha/dmcluster

root用户启动zabbix agent_数据库_36


29、 证明ha节点存在之后,退出。

命令:quit

root用户启动zabbix agent_数据库_37

将app-11namenode的初始化信息同步到app-12上

30、 先启动dfs整个的系统。

命令:start-dfs.sh

root用户启动zabbix agent_数据库_38


31、 免密登录到app-12上执行。

命令:ssh hadoop@app-12 "hdfsnamenode -bootstrapStandby"注:打印很多classpath

root用户启动zabbix agent_hadoop_39

启动整个集群检查hdfs和yarn是否成功

32、 关闭整个dfs系统,因为后续需要通过其他途径启动整个集群。

命令:stop-dfs.sh

root用户启动zabbix agent_hadoop_40


33、启动整个集群,时间会比较久。

命令:start-all.sh

root用户启动zabbix agent_Hadoop_41


34、检查hdfs和yarn到底是否成功,现将命令打出来。

命令:hdfs haadmin

root用户启动zabbix agent_hadoop_42


35、使用-getAllServiceState这个命令。

命令:hdfs haadmin -getAllServiceState

root用户启动zabbix agent_Hadoop_43

36、打印yarn的命令行。

命令:yarn rmadmin

root用户启动zabbix agent_Hadoop_44


37、使用-getAllServiceState这个命令。

命令:yarn rmadmin -getAllServiceState

root用户启动zabbix agent_Hadoop_45


38、验证整个集群,先看一下hdfs上有什么。命令:hdfs dfs -ls /注:hdfs为空

root用户启动zabbix agent_Hadoop_46

测试hadoop集群是否正常启动

1、为测试方便,创建一个目录。

命令:hdfsdfs -mkdir -p /test/data

root用户启动zabbix agent_数据库_47


2、将所有需要mapreduce数据放在data目录下,将配置文件以xml结尾的上传到data目录里。

命令:hdfs dfs -put /hadoop/Hadoop/hadoop-3.1.2/etc/hadoop/*.xml/test/data

root用户启动zabbix agent_Hadoop_48


3、查看是否上传成功。

命令:hdfsdfs -ls /test/data

root用户启动zabbix agent_hadoop_49


4、提交一个mapreduce任务,用hadoop自带的例子。

命令:hadoop jar/hadoop/Hadoop/hadoop-3.1.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.2.jargrep /test/data /test/output "dfs[a-z.]+"

注:使用的是grep参数,输入是test/data输出是test/output,这里的output一定不能存在,存在的话用rm命令删除掉。查询以dfs开头的,以小写字母以及.紧接着相邻的很多+字符的字符串。这个命令执行的时候分两步,第一步是查询,查到做正则表达的那一行,然后做排序。

root用户启动zabbix agent_hadoop_50


root用户启动zabbix agent_Hadoop_51


5、整个mapreduce案例已经执行完了,看结果输出什么东西。

命令:hdfs dfs -ls /test/output

注:输出了两个文件,结果在part-r-00000中

root用户启动zabbix agent_hdfs_52


6、查看part-r-00000文件中的内容。命令:hdfs dfs -cat /test/output/part-r-00000

root用户启动zabbix agent_hadoop_53

注:数字代表出现的次数,字符串是匹配的字符串。7、登录管理界面,查看已经执行完的任务。首先点击右侧chrome-browser。

root用户启动zabbix agent_数据库_54


8、再点击vnc_lite.html.

root用户启动zabbix agent_hadoop_55


9、单击右键,选择Chrome.

root用户启动zabbix agent_Hadoop_56


root用户启动zabbix agent_hadoop_57


10、输入网址,app-11:8088,会自动跳转到app-12:8088。

root用户启动zabbix agent_hadoop_58

常见问题

root用户启动zabbix agent_hdfs_59


问题:app-12和app-13的环境变量有问题。解决办法:检查环境变量,如有异常请使用source命令,运行环境变量或者删除workerspace后从头开始创建。