当前仓库属于暂停状态,部分功能使用受限,详情请查阅 仓库状态说明
2 Star 5 Fork 4

WangRuiHuan / Hadoop部署脚本
暂停

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Hadoop一键部署脚本


不使用docker部署

适用Hadoop版本:2.8.3,下载地址

JDK版本:jdk-8u144-linux-x64.rpm,官网地址

操作系统:CentOS 7

使用脚本前请先将hadoop,jdk下载至此项目中

步骤一:

将本目录下所有内容拷贝至将要部署hadoop-master节点的主机中.

并根据实际情况更改hadoop-install.sh文件中如下几项

hadoop_package_location="./" #Hadoop压缩包放置位置

hadoop_package_name="hadoop-2.8.3.tar.gz" #Hadoop压缩包名称

hadoop_dir_name="hadoop-2.8.3" #解压后Hadoop根文件夹名称

jdk_package_name="jdk-8u144-linux-x64.rpm" #jdk安装包名称

jdk_package_location="./" #jdk安装包路径

步骤二:

按照样例更改hosts-login.txt,ip地址,主机名,登录用户名,之间用空格分隔,namenode主节点必须位于文件第一行

192.168.0.104 hadoop.master root

步骤三

根据实际情况更改hadoop-env.sh脚本中JAVA环境变量(rpm安装后默认为/usr/java/jdk1.8.0_144)

export JAVA_HOME=${JAVA_HOME}

步骤四

core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml这四个配置文件参考Hadoop官网进行进一步配置

步骤五

执行hadoop-install.sh 执行过程中需要输入ssh确认信息及其他slaves节点账户密码 安装完成后,启动Hadoop节点执行如下指令,hadoop_location默认值为/root/hadoop,hadoop_dir_name为步骤一中配置值

cd ${hadoop_location}/${hadoop_dir_name}
./bin/hadoop namenode -format #格式化文件系统
./sbin/start-all.sh #启动hdfs及yard
jps #查看节点已启动的服务

打开浏览器访问http://namenode:50070,namenode为主节点Ip

CentOS7添加防火墙规则

firewall-cmd --zone=dmz --add-port=50070/tcp #允许入站端口50070
firewall-cmd --reload #更新防火墙规则

若添加规则仍无效,可以关闭防火墙

systemctl stop firewalld.service #停止firewall

使用docker部署

前提条件

目前测试环境为CentOS 7.0, docker版本为1.13.1

docker安装参考这里.

构建镜像前请将hadoop-2.8.3.tar.gz下载至hadoop_base目录下.

确保服务器主机时间正确!

下述所有操作均在centos管理员账户root下执行

同步服务器时间(可选)

安装ntpdate同步时间

 yum install -y ntpdate
 ntpdate asia.pool.ntp.org

构建镜像

部署中需要构建四个镜像,java, base,slave 和 master,由于master镜像和slave镜像基于 base 构建,base 基于centos-java, 所以你需要从底到上进行构建.

我们提供了一个自动化脚本用以构建镜像,你可以将通过执行 chmod +x ./build.sh && ./build.sh进行构建, 当然,你也可以通过以下几个步骤手动构建,以便了解流程

构建时间与机器性能及网络状态有关,若构建成功将会有 Successfully built cbdfb7666b10, 其中 cbdfb7666b10 为镜像id,不同镜像构建之后该值会有所不同.

  1. centos-java构建:

    centos_java8目录下执行 docker build -t licte/cent-java:latest ..

  2. hadoop-base构建:

    若有必要,在此镜像构建前,你可以进入hadoop配置文件目录根据需要更改配置信息,我们提供了一些默认值,更改时请注意同步更改构建本镜像的Dockerfile中的ARG值,目前版本中与配置文件相关的参数包括: HADOOP_HDFS_NAMENODE, HADOOP_HDFS_DATANODE 和 HADOOP_TMP_DIR .

    hadoop_base目录下执行 docker build -t licte/hadoop-base:latest ..

  3. hadoop-master构建:

    hadoop_master目录中执行 docker build -t licte/hadoop-master:latest ..

  4. hadoop-slave构建:

    公钥配置已废弃.注意:为方便Hadoop后续运行,我们将name节点公钥分发过程放在镜像构建中,所以在slave镜像构建前,你可以首先启动一个name节点: docker run -p 50070:50070 -p 8088:8088 --name=master --hostname=hadoop.master licte/hadoop-master,启动之后将会打印出该节点的公钥信息,将该公钥复制到hadoop_slave下的id_rsa.pub文件中,再进行下面步骤.当然你也可以在镜像构建之后手动将公钥内容复制到slave节点的 /root/.ssh/authorized_keys文件中,其作用是一样的

    hadoop_slave目录下执行 docker build -t licte/hadoop-slave:latest ..

  5. 查看镜像:

    执行 docker images 查看镜像列表,列表中应该包含以下内容:

    REPOSITORY                    TAG                 IMAGE ID            CREATED              SIZE
    licte/hadoop-slave            latest              050011e9b4a8        10 seconds ago       1.83 GB
    licte/hadoop-master           latest              4e3bdb2f1aff        About a minute ago   1.91 GB
    licte/hadoop-base             latest              9f4b4f0f8d5f        3 minutes ago        1.83 GB
    licte/cent-java               latest              fd370190e217        13 minutes ago       783 MB
    hub.c.163.com/public/centos   6.5                 997f0ed97903        2 years ago          442 MB

创建docker swarm网络

由于hadoop以集群发挥其作用,将全部容器放置在一台主机内失去其分布式作用,所以容器间跨主机通信十分必要.

此案例中有三台主机,一台运行hadoop-master容器,称其HM,其余两台运行slave容器,分别称为HS1,HS2.

这三台主机均安装了docker,都有上述镜像,为便于测试,在此我们可以先将防火墙关闭 systemctl stop firewalld .

在HM主机运行 docker swarm init,运行之后将会有token口令,请记下该token用于其他主机加入该网络.

在HS1和HS2都执行 docker swarm join --token ${TOKEN} ${IP}:2377,${TOKEN}为上一步生成的值,${IP}为HM主机的ip.加入成功之后将会有 This node joined a swarm as a worker.的提示.

在HM主机运行 docker node ls,应该类似所示

ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
f3j741he8o6tkjv7vvue36t48 *  HM        Ready   Active        Leader
ux2mb9d1kpm0ldut65r3820og    HS1       Ready   Active        

创建自定义docker网络:(在主机HM创建) docker network create -d overlay --attachable hadoop-net

执行 docker network ls,应该包含以下内容:

NETWORK ID          NAME                DRIVER              SCOPE
c1c53e22e54b        bridge              bridge              local
95dbfa451619        docker_gwbridge     bridge              local
xllhrzzj8dmq        hadoop-net          overlay             swarm
e2291caef7c6        host                host                local
k15ytvl4yvj3        ingress             overlay             swarm
a112ae08ef4f        none                null                local

运行及配置容器

根据需要,启动一个master节点及若干个slave节点.

启动 namenode:

docker run -itd \
        --net=hadoop-net \
        --name=master \
        -p 50070:50070 \
        -p 8088:8088 \
        -p 9000:9000 \
        -p 8042:8042 \
        --hostname=hadoop.master \
        licte/hadoop-master

启动 datanode,(根据需要更改name及hostname):

docker run -itd \
                --name slave1 \
                --hostname hadoop.slave1 \
                -p 50075:50075 \
                --net=hadoop-net \
                licte/hadoop-slave

容器启动之后进入master容器( docker exec -it master bash),执行 ls,将会看到以下文件

anaconda-ks.cfg  hdfs hosts ssh.sh hosts.example

你需要根据slave的节点信息参考 hosts.example修改 hosts 文件,

查看容器ip可以通过在宿主机执行 sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' ${?} ,将${?}替换为容器的name或者id即可

查看容器ip可以通过在宿主机执行 docker exec -it ${?} ip addr,将${?}替换为容器的name或者id即可

修改之后执行 ./ssh.sh 进行ssh免密登陆配置,该脚本执行过程中需要按提示输入信息(yes/no).

执行之后,你就可以进入${HADOOP_HOME}下,执行 sbin/start-all.sh 启动hadoop集群. 第一次启动集群需要进行确认公钥,需按提示输入(yes/no)

启动之后,可以通过在${HADOOP_HOME}/bin目录下执行 ./hadoop dfsadmin -report 查看集群信息, 也可以通过浏览器访问 http://xx.xx.xx.xx:50070 查看集群信息,其中 xx.xx.xx.xx 为部署master容器的宿主机的ip.

mapreduce例子:

# 上传 ${HADOOP_HOME}/bin/hadoop 脚本到dfs系统的根目录下
${HADOOP_HOME}/bin/hadoop fs -put ${HADOOP_HOME}/bin/hadoop /

# 运行hadoop提供的wordcount例子
${HADOOP_HOME}/bin/hadoop jar  /usr/local/hadoop-2.8.3/share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.8.3-sources.jar org.apache.hadoop.examples.WordCount /hadoop /out

# 查看wordcount的结果
${HADOOP_HOME}/bin/hdfs dfs -cat /out/part-r-00000

数据节点扩展及配置更改

以下所有操作均在master容器中进行,即namenode容器

创建新节点容器后,根据主机名,ip,登陆名修改 /root/hosts 文件.

hadoop配置文件在 ${HADOOP_HOME}/ect/hadoop 目录下,主要配置文件包括 core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml这四个.

修改文件之后,在/root目录下执行 ./ssh.sh,即可.

空文件

简介

完全分布的Hadoop集群部署脚本. 展开 收起
Shell
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Shell
1
https://gitee.com/wangruihuano/hadoop_deployment_script.git
git@gitee.com:wangruihuano/hadoop_deployment_script.git
wangruihuano
hadoop_deployment_script
Hadoop部署脚本
master

搜索帮助