Hadoop-3.2.1环境搭建(2)_伪分布模式
说明:平台基于CentOS 7.x操作系统。用户名及软件安装目录如下:
环境 | 设置或路径 |
---|---|
用户名 | hduser |
用户主目录 | /home/hduser |
软件安装包位于 | /home/hduser/software |
软件安装位置 | /home/hduser/bigdata/ |
一、安装和配置JDK
将提前下载的"jdk-8u181-linux-x64.tar.gz"安装包,拷贝到CentOS中的"~/software"目录下 ;
1、使用如下命令,进入到"/usr/local"目录下:
$ cd /usr/local
2、在"/usr/local"目录下,将刚才的jdk拷贝到当前目录下:
$ sudo cp ~/software/jdk-8u181-linux-x64.tar.gz ./
3、解压缩"jdk-8u181-linux-x64.tar.gz"安装包到"/usr/local/"目录下:
$ sudo tar -zxvf jdk-8u181-linux-x64.tar.gz
4、配置环境变量
首先,打开配置文件(如果未安装nano编辑器,可以使用vim编辑器打开):
$ sudo nano/etc/profile
在打开的”/etc/profile”文件中,最后一行的后面一行,添加如下内容(注意,标点符号全都要是英文半角):
export JAVA_HOME=/usr/local/jdk1.8.0_181 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH
然后保存。
5、执行”/etc/profile”文件,让配置生效:
$ source /etc/profile
6、验证JDK环境变量是否配置正确:
$ javac -version $ java -version
二、配置SSH无密登录
安装SSH服务,实现集群中SSH无密码连接(从主节点到从节点的无密码登录):
1、在终端下,执行如下的命令:(注:CentOS已自带SSH服务,略过此步)
$ yum -y install ssh $ ls -a
2、本地SSH登录:
$ ssh localhost $ exit
3、查看.ssh目录:
$ ls -a
4、进入.ssh目录:
$ cd .ssh
5、生成公私钥:
$ ssh-keygen -t rsa
然后一路回车。
6、将公钥加入到授权文件:
$ ssh-copy-id hduser@localhost
7、测试SSH无密码登录:
$ ssh localhost $ exit
会发现这时不再需要输入密码。
三、安装Hadoop
1、将hadoop安装包"hadoop-3.2.1.tar.gz",拷贝到CentOS中的"~/software/"目录下 。
2、将Hadoop压缩包,解压缩到"/home/hduser/bigdata"目录(用户主目录/bigdata)下 :
$ cd ~ $ mkdir bigdata $ cd bigdata $ tar -zxvf ~/software/hadoop-3.2.1.tar.gz
3、打开"/etc/profile"配置文件,配置hadoop环境变量(注意,标点符号全都要是英文半角):
export HADOOP_HOME=/home/hduser/bigdata/hadoop-3.2.1 export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"
然后保存。
4、执行"/etc/profile",让配置生效:
$ source /etc/profile
5、测试hadoop安装:
$ hadoop version
四、配置Hadoop
配置Hadoop,共需要配置5个文件(另外可选地配置workers文件),均位于Hadoop安装目录下的"etc/hadoop/"子目录下。首先进入到该目录下:
$ cd ~/bigdata/hadoop-3.2.1
1、配置hadoop-env.sh文件:
$ nano hadoop-evn.sh
然后找到并修改JAVA_HOME属性的值:
export JAVA_HOME=/usr/local/jdk1.8.0_181
2、配置core-site.xml文件:
$ nano core-site.xml
找到其中的"<configuration></configuration>"标签,在其中指定各个配置参数,如下所示:(注意,其中的cda是我自己的机器名,请你替换为你自己的机器名或IP地址)
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://cda:8020/</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/hduser/bigdata/hadoop-3.2.1/dfs/tmp</value> </property> <property> <name>hadoop.proxyuser.hduser.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hduser.groups</name> <value>*</value> </property> </configuration>
3、配置hdfs-site.xml文件:
$ nano hdfs-site.xml
找到其中的"<configuration></configuration>"标签,在其中指定各个配置参数,如下所示:
<configuration> <property> <name>dfs.namenode.name.dir</name> <value>/home/hduser/bigdata/hadoop-3.2.1/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/home/hduser/bigdata/hadoop-3.2.1/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.datanode.max.transfer.threads</name> <value>4096</value> </property> </configuration>
4、配置mapred-site.xml文件
$ nano mapred-site.xml
找到其中的"<configuration></configuration>"标签,在其中指定各个配置参数,如下所示:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.application.classpath</name> <value>$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*</value> </property> </configuration>
5、配置yarn-site.xml文件
$ nano yarn-site.xml
找到其中的"<configuration></configuration>"标签,在其中指定各个配置参数,如下所示:(注意,其中的cda是我自己的机器名,请你替换为你自己的机器名或IP地址)
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>cda</value> </property> </configuration>
6、配置从节点workers:
使用如下命令打开workers文件,在该文件中指定集群的从节点机器名或IP地址。因为是伪分布集群,所以指定本机名即可:
$ nano workers
将里面的localhost删除,写入当前的机器名,即"cda" ,然后保存文件。(注意,cda是我自己的机器名,请替换为你自己的机器名或IP地址)
五、格式化HDFS文件系统
格式化HDFS(仅需执行格式化一次)。在终端窗口,执行下面的命令:
$ hdfs namenode -format
注:如果因为某些原因需要从头重新配置集群,那么在重新格式化HDFS之前,先把Haoop下的dfs目录删除。 这个目录是在hdfs-site.xml文件中自己指定的,其下有两个子目录name和data,重新格式化之前必须删除它们。
六、在Hadoop上执行MR程序
1、首先启动HDFS集群:
$ start-dfs.sh
2、使用jps命令查看当前节点上运行的服务:
$ jps
3、查看块状态报告:
$ hdfs dfsadmin -report
4、查看HDFS文件系统根目录:
$ hdfs dfs -ls /
5、成功启动后,可以通过Web界面查看NameNode 和 Datanode 信息和HDFS文件系统。
NameNode Web接口:http://cda:9870。注意,其中的cda是我的机器名,请修改为你自己的机器名。
6、启动yarn:
$ start-yarn.sh $ jps
7、启动historyserver历史服务器和timelineserver时间线服务器:
$ mapred --daemon start historyserver $ yarn --daemon start timelineserver
8、运行pi程序:
先进入到程序示例.jar包所在的目录,然后运行MR程序:
$ cd ~/bigdata/hadoop-3.2.1/share/hadoop/mapreduce $ hadoop jar hadoop-mapreduce-examples-3.2.1.jar pi 10 20
在输出内容中,可以找到计算出的PI值。
9、可以通过 Web 界面查看:
打开浏览器,在地址栏输入:http://cda:8088
查看任务进度:http://cda:8088/cluster ,在 Web 界面点击 “Tracking UI” 这一列的 History 连接,可以看到任务的运行信息。同样,URL中的cda是我的机器名,请替换为你自己的机器名。
10、关闭集群:
$ stop-yarn.sh $ stop-dfs.sh $ mapred --daemon stop historyserver $ yarn --daemon stop timelineserver