CentOS下安装Hadoop集群

CentOS下安装Hadoop集群

安装前系统和用户配置

  1. Centos 7系统更新

    1
    2
    yum install epel-release
    yum update
  2. 创建用户并切换用户(可不用)

    1
    2
    adduser hadoop
    passwd hadoop

    vi /etc/sudoers

    1
    2
    3
    ## Allow root to run any commands anywhere
    root ALL=(ALL) ALL
    hadoop ALL=(ALL) ALL
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        su - hadoop
    mkdir /home/hadoop/Downloads
    ```
    ### 预处理
    #### Hadoop集群环境介绍
    | IP | hostname | 部署路径 | 部署规划 |
    | -- | -------- | ------- | ------- |
    | 10.0.2.176 | host2176 | /data | ZK |
    | 10.0.2.177 | host2177 | /data | ZK |
    | 10.0.2.180 | host2180 | /data | ZK |
    #### Hostname修改
    ```shell
    hostnamectl set-hostname host2176
    hostnamectl set-hostname host2177
    hostnamectl set-hostname host2180

注意: 在对应的机器上执行

修改Hosts文件

1
2
3
4
5
vi /etc/hosts

10.0.2.176 host2176
10.0.2.177 host2177
10.0.2.180 host2180

注意: 在所有机器上执行

设置无密登录

1
2
3
sudo yum install openssh-server
ssh-keygen -t rsa # 一直回车
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

注意: 在所有机器上执行。然后将其中一台~/.ssh下的文件通过scp -r ~/.ssh拷贝到另外两台机器

配置JDK环境

1
2
3
4
5
6
7
8
9
vi /etc/profile

#JAVA_JDK_JRE
export JAVA_HOME=/data/jdk1.8.0_201 # 需要自己下载jdk1.8.0_201并解压
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile # 及时生效
echo $JAVA_HOME

Zookeeper部署

下载

下载zookeeper-3.4.14/data目录下

1
2
3
4
5
6
7
8
9
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
tar -zxvf zookeeper-3.4.14.tar.gz

cd zookeeper-3.4.14
mkdir data log

cd data
# 在data里建立myid的文件,里面按顺序填写数字且不能重复,测试环境为3台机器,myid为1;2;3
vi myid

注意: 三台机器都要创建,且myid数字不一样

配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cp /data/zookeeper-3.4.14/conf/zoo_sample.cfg /data/zookeeper-3.4.14/conf/zoo.cfg

vi zoo.cfg

# 修改以下文件
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper-3.4.14/data # 此处可根据自己情况
dataLogDir=/data/zookeeper-3.4.14/log # 此处可根据自己情况
clientPort=2181
server.1=10.0.2.176:2888:3888 # 此处的1与myid文件中的对应
server.2=10.0.2.177:2888:3888 # 此处的2与myid文件中的对应
server.3=10.0.2.180:2888:3888 # 此处的3与myid文件中的对应

启动和停止

1
2
3
/data/zookeeper-3.4.14/bin/zkServer.sh start # 启动zk
/data/zookeeper-3.4.14/bin/zkServer.sh status # 查看启动状态,一般为一个leader两个follower
/data/zookeeper-3.4.14/bin/zkServer.sh stop # 停止zk

注意: 三台机器都要执行

安装和配置Hadoop集群

下载

1
2
3
4
5
6
wget https://archive.apache.org/dist/hadoop/core/hadoop-2.7.7/hadoop-2.7.7.tar.gz
tar -zxvf hadoop-2.7.7.tar.gz
mv hadoop-2.7.7.tar.gz hadoop
cd hadoop
mkdir data logs tmp # 注意修改权限和别的hadoop文件一致
chown -R hadoop:hadoop

修改配置文件

  1. /etc/profile文件中添加Hadoop

    1
    2
    3
    4
    5
    vi /etc/profile

    export HADOOP_HOME=/data/hadoop
    export HADOOP_SSH_OPTS="-p 36000" # 如果您机器修改了连接端口,此处要进行设置
    export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
  2. 修改core-site.xml文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    vi ./etc/hadoop/core-site.xml

    <configuration>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/data/hadoop/tmp</value>
    <description>Abase for other temporary directories.</description>
    </property>
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://host2176:9000</value> ## 查看端口是否被占用
    </property>
    <property>
    <name>io.file.buffer.size</name>
    <value>4096</value>
    </property>
    <property>
    <name>hadoop.proxyuser.u0.hosts</name>
    <value>*</value>
    </property>
    <property>
    <name>hadoop.proxyuser.u0.groups</name>
    <value>*</value>
    </property>
    </configuration>
  3. 修改hdfs-site.xm文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    vi ./etc/hadoop/hdfs-site.xml

    <configuration>
    <property>
    <name>dfs.replication</name>
    <value>1</value>
    </property>
    <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/data/bigdata/hadoop/data</value>
    </property>
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
    <property>
    <name>dfs.http.address</name>
    <value>0.0.0.0:50070</value>
    </property>
    <property>
    <name>dfs.permissions</name>
    <value>false</value>
    </property>
    </configuration>
  4. 修改mapred-site.xml文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    cp ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml
    vi ./etc/hadoop/mapred-site.xml

    <configuration>
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
    </configuration>
  5. 配置hadoop-env.sh文件

    1
    2
    3
    4
    vi ./etc/hadoop/hadoop-env.sh

    # JAVA_HOME
    export JAVA_HOME=/data/jdk1.8.0_201

    注意: 如果配置了JAVA_HOME还是不可以的话,请修改此处。

  6. 修改slaves文件
    1
    2
    3
    4
    5
    vi slaves

    host2176
    host2177
    host2180

启动Hadoop集群

  1. 启动journalnode

    1
    ./sbin/hadoop-daemon.sh start journalnode

    注意: 在三台机器上都执行。

  2. 格式化

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        ./bin/hdfs namenode -format
    ```
    **注意:** 将配置好的master节点的hadoop文件夹,拷贝到其他机器上.

    3. 启动Hadoop集群
    ```shell
    ./sbin/start-all.sh
    # 或者
    ./sbin/start-dfs.sh
    ./sbin/start-yarn.sh

    注意: 在master节点执行即可

  3. 停止Hadoop集群

    1
    2
    3
    4
    ./sbin/stop-all.sh
    # 或者
    ./sbin/stop-dfs.sh
    ./sbin/stop-yarn.sh

    注意: 在master节点执行即可

Hadoop集群测试

可以通过http://10.0.2.176:50070查看Hadoop集群情况。

部署过程中遇到的问题

  1. 执行create table时,一直卡住不动

    1
    2
    # 安全模式
    ./bin/hdfs dfsadmin -safemode leave
  2. 查看节点启动情况,如果出现datanode没启动情况

    1
    2
    3
    4
    5
    # 查看节点启动情况
    ./bin/hdfs dfsadmin -report

    # 重新启动节点
    ./bin/hdfs dfsadmin -refreshNodes

后续补充高可用方案

说明: 如果本人写的有什么问题,请多多指教!