CentOS7下Hadoop分布式环境搭建过程

2020-04-27 09:48:56 浏览数 (1)

先准备如下三台虚拟服务器

Hadoop中心服务器 192.168.31.160

节点Node1:192.168.31.161

节点Node2:192.168.31.162

1、三台服务器均需要安装JDK8,然后配置环境变量

1)安装jdk rpm -ivh jdk-8u221-linux-x64.rpm

2)配置环境变量vi /etc/profile,将如下三行加到最后

代码语言:javascript复制
export JAVA_HOME=/usr/java/jdk1.8.0_221-amd64
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

3)使生效source /etc/profile

2、并且在每台节点上面全创建一个hadoop用户,设置用户密码(我这里三台均设置为hadoop)

代码语言:javascript复制
[root@Hadoop ~]# useradd -d /usr/hadoop hadoop
[root@Hadoop ~]# chmod 755 /usr/hadoop
[root@Hadoop ~]# passwd hadoop

3、均使用hadoop用户登录服务器,然后在主节点上设置ssh免密登录,保证能直接免密登录到三台节点上

代码语言:javascript复制
su - hadoop
ssh-keygen
ssh-copy-id localhost
ssh-copy-id 192.168.31.161
ssh-copy-id 192.168.31.162

4、在三台服务器上传hadoop安装包,均解压hadoop包到/usr/hadoop目录,进行如下操作

代码语言:javascript复制
tar -zxf hadoop-3.1.2.tar.gz -C /usr/hadoop --strip-components 1
vi ~/.bash_profile

追加

代码语言:javascript复制
export HADOOP_HOME=/usr/hadoop
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
 source ~/.bash_profile使生效

5、使用hadoop用户登录到主节点,配置hadoop的相关配置文件

代码语言:javascript复制
[hadoop@Hadoop ~]$ vi ~/etc/hadoop/hdfs-site.xml

1)hdfs-site.xml

代码语言:javascript复制
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///usr/hadoop/datanode</value>
  </property>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///usr/hadoop/namenode</value>
  </property>

2)core-site.xml

代码语言:javascript复制
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://Hadoop:9000/</value>
  </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/hadoop/tmp</value>
    </property>

3)yarn-site.xml

代码语言:javascript复制
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>Hadoop</value>
  </property>
  <property>
    <name>yarn.nodemanager.hostname</name>
    <value>Hadoop</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>

4)mapred-site.xml

代码语言:javascript复制
 <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
    <property>
        <name>yarn.app.mapreduce.am.env</name>
        <value>HADOOP_MAPRED_HOME=/usr/hadoop/</value>
    </property>
    <property>
        <name>mapreduce.map.env</name>
        <value>HADOOP_MAPRED_HOME=/usr/hadoop/</value>
    </property>
    <property>
        <name>mapreduce.reduce.env</name>
        <value>HADOOP_MAPRED_HOME=/usr/hadoop/</value>
    </property>

5)hadoop-env.sh

取消export JAVA_HOME注释,并修改

代码语言:javascript复制
 export JAVA_HOME=/usr/java/jdk1.8.0_221-amd64 

6)workers

7)接下来切换到root用户vi编辑/etc/hosts

8)创建datanode和namenode目录

在主节点编辑完成之后,直接scp发送给Node1,Node2节点

代码语言:javascript复制
scp ./etc/hadoop/* Node1:~/etc/hadoop/
scp ./etc/hadoop/* Node2:~/etc/hadoop/

9)分别在 start-dfs.sh 和 stop-dfs.sh 中添加如下内容

代码语言:javascript复制
HDFS_DATANODE_USER=hadoop
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=hadoop
HDFS_SECONDARYNAMENODE_USER=hadoop

别在 start-yarn.sh 和 stop-yarn.sh 中添加如下内容

代码语言:javascript复制
YARN_RESOURCEMANAGER_USER=hadoop
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=hadoop

6、hadoop服务启动以及相关操作

代码语言:javascript复制
hdfs namenode -format

然后start-dfs.sh,start-yarn.sh或者直接start-all.sh启动hadoop

jps查看状态,或者http://192.168.31.160:9870查看集群状态

7、mapreduce样例测试

代码语言:javascript复制
[hadoop@Hadoop ~]$ hadoop fs -mkdir /test                      
[hadoop@Hadoop ~]$ hadoop fs -put /usr/hadoop/test.log /test
代码语言:javascript复制
hadoop fs -ls -R /
hadoop fs -cat /output01/part-r-00000

0 人点赞