Tez环境搭建
编译Tez
由于在Tez-Yarn的官网上并没有关于hadoop3.1.2对应的Tez-Yarn安装包,所以我们进行针对性的编译。先检测Maven是否安装了。
修改pom.xml
编译modules,将tez-ui注释掉,不需要编译tez-ui。
检测Maven是否安装
1、在app-11上,使用hadoop用户登录。
命令:su - hadoop
2、检测Maven是否安装。
命令:mvn -version
3、进入cd/hadoop/tools/目录下。
命令:cd /hadoop/tools/
4、这里没有Maven,下载Maven。
命令:wget http://archive.apache.org/dist/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
5、解压。
命令:tar -xf apache-maven-3.6.0-bin.tar.gz
6、在环境变量中加入MAVEN_HOME路径。
命令:vi ~/.bashrc
exportMAVEN_HOME=/hadoop/tools/apache-maven-3.6.0
export PATH=${MAVEN_HOME}/bin:$PATH
7、将新添加的环境变量生效。
命令:source ~/.bashrc、echo $PATH
8、查看Maven是否安装成功。
命令:mvn -version
下载编译程序
9、切到tmp目录下。
命令:cd /tmp/
10、创建tez文件。
命令:mkdir tez
11、进入Spark-stack/Tez目录下。
命令:cd Spark-stack/Tez
12、将buildTez下的内容拷贝到tez目录下。
命令:cp buildTez/* /tmp/tez/
13、切换到tez目录下。
命令:cd /tmp/tez/
14、解压apache-tez-0.9.0-src.tar.gz。
命令:tar -xf apache-tez-0.9.0-src.tar.gz
15、将pom.xml拷贝到源码目录下。
命令:cp pom.xml apache-tez-0.9.0-src
16、进入源码目录。
命令:cd apache-tez-0.9.0-src
编译
17、开始编译。
命令:mvn -X clean package -DskipTests=true -Dhadoop.version=3.1.2 -Phadoop28 -P\!hadoop27 -Dprotoc.path=/hadoop/tools/protobuf-2.5.0/bin/protoc -Dmaven.javadoc.skip=true
注:使用hadoop3.1.2版本,不使用2.7版本。同时在tools里面安装了protobuf组件,将path写在这个命令行上,并且不进行测试。编译的时间是9分钟。显示每个模块相关的编译耗时。
18、安装包在tez-dist目录下。
命令:cd tez-dist/
19、进入target目录。
命令:cd target/
注:有了tez-0.9.1-minimal.tar.gz和tez-0.9.1.tar.gz这两个包证明编译成功。
安装有两种方式,第一种是先进行编译,将编译出来的安装包拷贝到集群上,命令:cp tez-0.9.1-minimal.tar.gz
tez-0.9.1.tar.gz /安装tez的路径。第二种是github上有对应的安装包,直接下载到对应的位置。
安装
修改hadoop-env.sh
增加了三个配置。
修改mapred-site.xml
将mapreduce框架改为yarn-tez。
增加tez-site.xml
tez.lib.uris指向/user/tez/tez-0.9.0.tar.gz。
下载安装包
1、返回根目录。
命令:cd
2、检查集群是否正常启动。
命令:jps
3、在hadoop根目录下创建tez安装文件。
命令:mkdir /hadoop/Tez
4、进入Spark-stack/Tez目录下。
命令:cd /tmp/Spark-stack/Tez/
5、这是直接在GitHub上下载安装包。Tez安装包在apache-tez-0.9.0-bin目录下,将该目录下的安装拷贝到安装Tez目录下。
命令:cp apache-tez-0.9.0-bin/* /hadoop/Tez/
6、进入安装Tez目录下。
命令:cd /hadoop/Tez/
将tez-0.9.0.tar.gz上传到hdfs中
7、先创建tez目录。
命令:hdfs dfs -mkdir /user/tez
8、将安装包上传到tez目录下。
命令:hdfs dfs -put tez-0.9.0.tar.gz /user/tez/
9、查看是否上传成功。
命令:hdfs dfs -ls /user/tez/
10、进入hadoop的配置文件。
命令:cd /hadoop/Hadoop/hadoop-3.1.2/etc/hadoop/
11、将mapred-site.xml和hadoop-env.sh文件删除。
命令:rm -rf mapred-site.xml hadoop-env.sh
将配置文件拷贝到集群的各个机器上
12、进入Spark-stack/Tez/目录下。
命令:cd /tmp/Spark-stack/Tez/
13、将配置文件拷贝到hadoop的配置文件下。
命令:cp -r conf/* /hadoop/Hadoop/hadoop-3.1.2/etc/hadoop/
14、将配置也拷贝到app-12和app-13上。
命令:scp -r conf/* hadoop@app-12:/hadoop/Hadoop/hadoop-3.1.2/etc/hadoop/
、scp -r conf/* hadoop@app-13:/hadoop/Hadoop/hadoop-3.1.2/etc/hadoop/
注:因为scp是覆盖拷贝所以不需要删除。
解压tez-0.9.0-minimal.tar.gz
15、进入Tez安装目录。
命令:cd /hadoop/Tez/
16、创建tez-0.9.0-minimal。
命令:mkdir tez-0.9.0-minimal
17、将tez-0.9.0-minimal.tar.gz解压到tez-0.9.0-minimal。因为在hadoop-env.sh中添加的TEZ_JARS在tez-0.9.0-minimal目录下。
命令:tar -xf tez-0.9.0-minimal.tar.gz -C tez-0.9.0-minimal
18、进入到tez-0.9.0-minimal目录下。
命令:cd tez-0.9.0-minimal
集群重启
19、先停止集群。
命令:stop-all.sh
20、登录app-12上停止historyserver。
命令:ssh app-12 "mapred --daemon stop historyserver"
21、检查启动的集群。
命令:jps
注:除了zookeeper进程在启动没有其他进程。
22、登录其他的机器确保只有zookeeper进程。
命令:ssh app-12 "jps"
、ssh app-13 "jps"
23、启动hadoop集群。
命令:start-all.sh
24、重新启动app-12上的historyserver。
命令:ssh app-12 "mapred --daemon start historyserver"
25、使用jps检查集群。
命令:jps
注:NameNode、NodeManager、ResourceManager均已经启动了。
测试
26、查看tez-0.9.0-minimal目录。
命令:ls
注:用这里的example做测试。
27、查看hdfs的目录。
命令:hdfs dfs -ls/
28、做测试的输入是做hadoop安装时做测试的文件。这个文件在/installTest/hadoop/data目录下,先查看该目录的文件。
命令:hdfs dfs -ls /installTest/hadoop/data
29、MapReduce测试。
命令:hadoop jar tez-examples-0.9.1.jar orderedwordcount /installTest/hadoop/data /installTest/hadoop/output3
注:hadoop jar运行tez-examples-0.9.1.jar然后运行tez-examples-0.9.1.jar里的orderedwordcount命令。orderedwordcount的含义是不仅要进行wordcount还要根据word进行排序。输出是/installTest/hadoop/data,输出是/installTest/hadoop/output3,确保输出文件不存在即可
30、查看输出的文件。
命令:hdfs dfs -ls /installTest/hadoop/data /installTest/hadoop/output3
31、输出的结果在part-v002-o000-r-00000中。
命令:hdfs dfs -cat /installTest/hadoop/data /installTest/hadoop/output3/part-v002-o000-r-00000
注:结果是按照value排序的。
常见问题
问题解释:环境变量执行缓慢。
解决办法:多次进行source命令,更新环境变量。