Hadoop搭建

Hadoop搭建

 

Hadoop的搭建有三种方式

单机版适合开发调试;伪分布式版,适合模拟集群学习;

完全分布式,生产使用的模式。

搭建完全分布式的hadoop集群,一个主节点,三个数据节点为例来讲解。

 

基础环境

 

环境准备

 

1、软件版本

 

四台服务器配置,系统:centos6.5、内存:1G、硬盘:20G

 

四台服务器分配的IP地址:192.168.0.71/72/73/74

 

规划:71用作主节点用作hadoop-master,其它三台为数据节点72、73、74用作hadoop-salve1~3

 

jdk和生成保持一致使用1.7版本

 

hadoop使用2.7.3版本,下载地址:http://apache.claz.org/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz

 

2、host配置和主机名(四台)

 

修改四台服务器的hosts文件

 

vim /etc/hosts

 

192.168.0.71 hadoop-master

 

192.168.0.72 hadoop-slave1

 

192.168.0.73 hadoop-slave2

 

192.168.0.74 hadoop-slave3

 

分别斯塔服务器的主机名:HOSTNAME,master为例说明

 

vi /etc/sysconfig/network

 

HOSTNAME=hadoop-master

 

执行reboot后生效,完成之后依次修改其它salve服务器为: hadoop-slave1~3。

 

3、服务器安装jdk(四台)

 

建议使用yum安装jdk,也可以自行下载安装

 

yum -y install java-1.7.0-openjdk*

 

配置环境变量,修改配置文件vim /etc/profile

 

export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64

 

export PATH=$JAVA_HOME/bin:$PATH

 

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

 

使用souce命令让立刻生效

 

source /etc/profile

 

免密登陆

 

一、首先关闭四台服务器的防火墙和SELINUX

 

查看防火墙状态

 

service iptables status

 

关闭防火墙

 

service iptables stop

 

chkconfig iptables off

 

关闭SELINUX后,需要重启服务器

 

-- 关闭SELINUX

 

# vim /etc/selinux/config

 

-- 注释掉

 

#SELINUX=enforcing

 

#SELINUXTYPE=targeted

 

-- 添加

 

SELINUX=disabled

 

二、免密码登录本机

 

下面以配置hadoop-master本机无密码登录为例进行讲解,用户需参照下面步骤完成h-salve1~3三台子节点机器的本机无密码登录;

 

1)生产秘钥

 

ssh-keygen -t rsa

 

2)将公钥追加到”authorized_keys”文件

 

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

 

3)赋予权限

 

chmod 600 .ssh/authorized_keys

 

4)验证本机能无密码访问

 

ssh hadoop-master

 

最后,依次配置h-salve1~3无密码访问

 

二、hadoop-master本机无密码登录hadoop-slave1、hadoop-slave2、hadoop-slave3,以hadoop-master无密码登录hadoop-slave1为例进行讲解:

 

1)登录hadoop-slave1 ,复制hadoop-master服务器的公钥”id_rsa.pub”到hadoop-slave1服务器的”root”目录下。

 

scp root@hadoop-master:/root/.ssh/id_rsa.pub /root/

 

2)将hadoop-master的公钥(id_rsa.pub)追加到hadoop-slave1的authorized_keys中

 

cat id_rsa.pub >> .ssh/authorized_keys

 

rm -rf  id_rsa.pub

 

3)在 hadoop-master上面测试

 

ssh hadoop-slave1

 

三、配置hadoop-slave1~hadoop-slave3本机无密码登录hadoop-master

 

下面以hadoop-slave1无密码登录hadoop-master为例进行讲解,用户需参照下面步骤完成hadoop-slave2~hadoop-slave3无密码登录hadoop-master。

 

1)登录hadoop-master,复制hadoop-slave1服务器的公钥”id_rsa.pub”到hadoop-master服务器的”/root/”目录下。

 

scp root@hadoop-slave1:/root/.ssh/id_rsa.pub /root/

 

2)将hadoop-slave1的公钥(id_rsa.pub)追加到hadoop-master的authorized_keys中。

 

cat id_rsa.pub >> .ssh/authorized_keys

 

rm -rf  id_rsa.pub //删除id_rsa.pub

 

3)在 hadoop-slave1上面测试

 

ssh hadoop-master

 

依次配置 hadoop-slave2、hadoop-slave3

 

到此主从的无密登录已经完成了。

 

Hadoop环境搭建

 

配置hadoop-master的hadoop环境

 

1、hadoop-master上 解压缩安装包及创建基本目录

 

#下载

 

wget http://apache.claz.org/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz

 

#解压

 

tar -xzvf  hadoop-2.7.3.tar.gz    -C /usr/local

 

#重命名

 

mv  hadoop-2.7.3  hadoop

 

2、 配置hadoop-master的hadoop环境变量

 

1)配置环境变量,修改配置文件vi /etc/profile

 

export HADOOP_HOME=/usr/local/hadoop

 

export PATH=$PATH:$HADOOP_HOME/bin

 

使得hadoop命令在当前终端立即生效

 

source /etc/profile

 

下面配置,文件都在:/usr/local/hadoop/etc/hadoop路径下

 

2、配置core-site.xml

 

修改Hadoop核心配置文件/usr/local/hadoop/etc/hadoop/core-site.xml,通过fs.default.name指定NameNode的IP地址和端口号,通过hadoop.tmp.dir指定hadoop数据存储的临时文件夹。

 

<configuration>

 

    <property>

 

        <name>hadoop.tmp.dir</name>

 

        <value>file:/usr/local/hadoop/tmp</value>

 

        <description>Abase for other temporary directories.</description>

 

    </property>

 

    <property>

 

        <name>fs.defaultFS</name>

 

        <value>hdfs://hadoop-master:9000</value>

 

    </property>

 

</configuration>

 

特别注意:如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被删除,必须重新执行format才行,否则会出错。

 

3、配置hdfs-site.xml:

 

修改HDFS核心配置文件/usr/local/hadoop/etc/hadoop/hdfs-site.xml,通过dfs.replication指定HDFS的备份因子为3,通过dfs.name.dir指定namenode节点的文件存储目录,通过dfs.data.dir指定datanode节点的文件存储目录。

 

<configuration>

 

    <property>

 

        <name>dfs.replication</name>

 

        <value>3</value>

 

    </property>

 

    <property>

 

        <name>dfs.name.dir</name>

 

        <value>/usr/local/hadoop/hdfs/name</value>

 

    </property>

 

    <property>

 

        <name>dfs.data.dir</name>

 

        <value>/usr/local/hadoop/hdfs/data</value>

 

    </property>

 

</configuration>

 

4、配置mapred-site.xml

 

拷贝mapred-site.xml.template为mapred-site.xml,在进行修改

 

cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml

 

vim /usr/local/hadoop/etc/hadoop/mapred-site.xml

 

<configuration>

 

  <property>

 

      <name>mapreduce.framework.name</name>

 

      <value>yarn</value>

 

  </property>

 

   <property>

 

      <name>mapred.job.tracker</name>

 

      <value>http://hadoop-master:9001</value>

 

  </property>

 

</configuration>

 

5、配置yarn-site.xml

 

<configuration>

 

<!-- Site specific YARN configuration properties -->

 

    <property>

 

        <name>yarn.nodemanager.aux-services</name>

 

        <value>mapreduce_shuffle</value>

 

    </property>

 

    <property>

 

        <name>yarn.resourcemanager.hostname</name>

 

        <value>hadoop-master</value>

 

    </property>

 

</configuration>

 

6、配置masters文件

 

修改/usr/local/hadoop/etc/hadoop/masters文件,该文件指定namenode节点所在的服务器机器。删除localhost,添加namenode节点的主机名hadoop-master;不建议使用IP地址,因为IP地址可能会变化,但是主机名一般不会变化。

 

vi /usr/local/hadoop/etc/hadoop/masters

 

## 内容

 

hadoop-master

 

7、配置slaves文件(Master主机特有)

 

修改/usr/local/hadoop/etc/hadoop/slaves文件,该文件指定哪些服务器节点是datanode节点。删除locahost,添加所有datanode节点的主机名,如下所示。

 

vi /usr/local/hadoop/etc/hadoop/slaves

 

## 内容

 

hadoop-slave1

 

hadoop-slave2

 

hadoop-slave3

 

配置hadoop-slave的hadoop环境

 

下面以配置hadoop-slave1的hadoop为例进行演示,用户需参照以下步骤完成其他hadoop-slave2~3服务器的配置。

 

1)复制hadoop到hadoop-slave1节点

 

scp -r /usr/local/hadoop hadoop-slave1:/usr/local/

 

登录hadoop-slave1服务器,删除slaves内容

 

rm -rf /usr/local/hadoop/etc/hadoop/slaves

 

2)配置环境变量

 

vi /etc/profile

 

## 内容

 

export HADOOP_HOME=/usr/local/hadoop

 

export PATH=$PATH:$HADOOP_HOME/bin

 

使得hadoop命令在当前终端立即生效;

 

source /etc/profile

 

依次配置其它slave服务

 

启动集群

 

1、格式化HDFS文件系统

 

进入master的~/hadoop目录,执行以下操作

 

bin/hadoop namenode -format

 

格式化namenode,第一次启动服务前执行的操作,以后不需要执行。

 

2、然后启动hadoop:

 

sbin/start-all.sh

 

3、使用jps命令查看运行情况

 

#master 执行 jps查看运行情况

 

25928 SecondaryNameNode

 

25742 NameNode

 

26387 Jps

 

26078 ResourceManager

 

#slave 执行 jps查看运行情况

 

24002 NodeManager

 

23899 DataNode

 

24179 Jps

 

4、命令查看Hadoop集群的状态

 

通过简单的jps命令虽然可以查看HDFS文件管理系统、MapReduce服务是否启动成功,但是无法查看到Hadoop整个集群的运行状态。我们可以通过hadoop dfsadmin -report进行查看。用该命令可以快速定位出哪些节点挂掉了,HDFS的容量以及使用了多少,以及每个节点的硬盘使用情况。

 

hadoop dfsadmin -report

 

输出结果:

 

Configured Capacity: 50108030976 (46.67 GB)

 

Present Capacity: 41877471232 (39.00 GB)

 

DFS Remaining: 41877385216 (39.00 GB)

 

DFS Used: 86016 (84 KB)

 

DFS Used%: 0.00%

 

Under replicated blocks: 0

 

Blocks with corrupt replicas: 0

 

Missing blocks: 0

 

 

 

 

 

 

 

                            2016届

Ubuntu 14.04 LTS上安装部署Hadoop 2.7.1(伪分布式)

任务1-3

  • 安装Ubuntu14.04LTS

下载ubuntu-14.04.1-desktop-amd64.iso,根据提示一步一步安装,用户为Hadoop用户,密码为Hadoop

 

  • 配置ssh免密码登录

安装ssh server:sudo apt-get install openssh-server

cd ~/.ssh/       # 若没有该目录,请先执行一次ssh localhost

ssh-keygen -t rsa             # 会有提示,都按回车就可以

cat id_rsa.pub >> authorized_keys  # 加入授权

使用ssh localhost试试能否直接登录

 

  • 配置JDK

下载jdk-7u79-linux-x64.tar.gz

将JDK安装至/usr/lib/jvm下,所以先到/usr/lib/目录下建立jvm文件夹

cd /usr/lib/  打开/usr/lib文件夹

sudo mkdir jvm  创建jvm文件

解压下载的安装包至jvm文件夹(jdk1.7.0_79)

sudo tar zxvf ~/下载/jdk-7u79-linux-x64.tar.gz -C /usr/lib/jvm(由于我的所有文件都放在下载这个文件夹中,所以我的地址为~/下载,下面Hadoop同步)

设置JAVA_HOME:

sudo gedit ~/.bashrc

在第一行前面增加:export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_79,保存退出。

立即生效:source ~/.bashrc

测试JAVA_HOME是否设置成功,输出了上面设置的路径表示成功:

echo $JAVA_HOME

 

 

  • 安装Hadoop2.7.1

sudo tar -zxvf  ~/下载/hadoop-2.7.1.tar.gz -C /usr/local (将Hadoop2.7.1解压放在/usr/local目录下)

cd /usr/local/

sudo mv ./hadoop-2.7.1/ ./hadoop    # 将文件夹名改为hadoop

sudo chown -R linuxidc ./hadoop      # 修改文件权限

sudo gedit ~/.bashrc

打开界面后,在之前配置的JAVA_HOME后面输入:

export HADOOP_INSTALL=/usr/local/hadoop

export PATH=$PATH:$HADOOP_INSTALL/bin

export PATH=$PATH:$HADOOP_INSTALL/sbin

export HADOOP_MAPRED_HOME=$HADOOP_INSTALL

export HADOOP_COMMON_HOME=$HADOOP_INSTALL

export HADOOP_HDFS_HOME=$HADOOP_INSTALL

export YARN_HOME=$HADOOP_INSTALL

立即生效:source ~/.bashrc

  • 配置伪分布式

    切换至配置文件目录:  cd /usr/local/hadoop/etc/hadoop

sudo gedit core-site.xml

<configuration>

    <property>

        <name>hadoop.tmp.dir</name>

        <value>file:/usr/local/hadoop/tmp</value>

        <description>Abase for other temporary directories.</description>

    </property>

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://localhost:9000</value>

    </property>

</configuration>

sudo gedit hdfs-site.xml

<configuration>

    <property>

        <name>dfs.replication</name>

        <value>1</value>

    </property>

    <property>

        <name>dfs.namenode.name.dir</name>

        <value>file:/usr/local/hadoop/tmp/dfs/name</value>

    </property>

    <property>

        <name>dfs.datanode.data.dir</name>

        <value>file:/usr/local/hadoop/tmp/dfs/data</value>

    </property>

</configuration>

sudo gedit yarn-site.xml

<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>

</configuration>

mv mapred-site.xml.template mapred-site.xml更换名字

sudo gedit mapred-site.xml

<configuration>

  <property>

  <name>mapreduce.framework.name</name>

  <value>yarn</value>

  </property>

</configuration>

  • 启动/停止hadoop

到这里Hadoop2.7.1伪分布式就已经配置好了,现在来进行启动。启动之前需要将格式化。

hdfs namenode –format

倒数第五行出现Exitting with status 0 表示成功,若为 Exitting with status 1 则是出错。

start-all.sh 启动所有的Hadoop守护进程。包括NameNode、 Secondary NameNode、DataNode、JobTracker、 TaskTrack

stop-all.sh 停止所有的Hadoop守护进程。包括NameNode、 Secondary NameNode、DataNode、JobTracker、 TaskTrack

start-dfs.sh 启动Hadoop HDFS守护进程NameNode、SecondaryNameNode和DataNode

stop-dfs.sh 停止Hadoop HDFS守护进程NameNode、SecondaryNameNode和DataNode

hadoop-daemons.sh start namenode 单独启动NameNode守护进程

hadoop-daemons.sh stop namenode 单独停止NameNode守护进程

hadoop-daemons.sh start datanode 单独启动DataNode守护进程

hadoop-daemons.sh stop datanode 单独停止DataNode守护进程

hadoop-daemons.sh startsecondarynamenode单独启动SecondaryNameNode守护进程

hadoop-daemons.sh stop secondarynamenode 单独停止SecondaryNameNode守护进程

start-mapred.sh 启动Hadoop MapReduce守护进程JobTracker和TaskTracker

stop-mapred.sh 停止Hadoop MapReduce守护进程JobTracker和TaskTracker

hadoop-daemons.sh start jobtracker 单独启动JobTracker守护进程

hadoop-daemons.sh stop jobtracker 单独停止JobTracker守护进程

hadoop-daemons.sh start tasktracker 单独启动TaskTracker守护进程

hadoop-daemons.sh stop tasktracker 单独启动TaskTracker守护进程

jps 查看

完整进程如下:

2583 DataNode

2970 ResourceManager

3461 Jps

3177 NodeManager

2361 NameNode

2840 SecondaryNam

若执行jps后提示:

程序 'jps' 已包含在下列软件包中:

* default-jdk

* ecj

* gcj-4.6-jdk

* openjdk-6-jdk

* gcj-4.5-jdk

* openjdk-7-jdk

请尝试:sudo apt-get install <选定的软件包>

那么请执行下面命令,手动设置系统默认JDK:

 

Sudo update-alternatives --install /usr/bin/jps jps /usr/lib/jvm/jdk1.7.0_79/bin/jps 1

sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_79/bin/javac 300

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_79/bin/java 300

再次执行jps就不会出现提示了。

 

任务1-2

启动Hadoop

hdfs dfs -mkdir -p /user/hadoop (要使用当前用户的用户名)

hdf s dfs -mkdir -p /input   hdfs创建input目录

hdfs dfs -put ~/下载/dat0102.dat /input/  将本地文件dat0102.dat导入到HDFSinput目录中

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-

examples-2.7.1.jar grep /input/dat0102.dat/ /output/ "HDFS"  

调用Hadoop jar包来查询dat0102.dat中的HDFS字段出现的次数,并保存在output目录下

hdfs dfs -cat /output/part-r-00000  输出hdfs字段出现的次数

 

任务1-3

Hadoop 平台进行性能调优

在yarn-site.xml添加以下代码

sudo gedit yarn-site.xml

<property>

  <name>yarn.scheduler.maximum-allocation-mb</name>

  <value>2048</value>

</property>

在mapred-site.xml添加如下带代码

sudo gedit mapred-site.xml

<property>

  <name>mapreduce.map.memory.mb</name>

  <value>1024</value>

</property>

<property>

  <name>mapreduce.reduce.memory.mb</name>

  <value>2048</value>

</property>

<property>

  <name>mapreduce.map.java.opts</name>

  <value>-Xmx768m</value>

  </property>

<property>

  <name>mapreduce.reduce.java.opts</name>

  <value>-Xmx1536m</value>

</property>

 

任务2-4

  • 安装hive2.1.1

sudo tar -zxvf ~/下载/apache-hive-2.1.1-bin.tar.gz -C /usr/local

    cd /usr/local/

sudo mv apache-hive-2.1.1-bin hive       # 将文件夹名改为hive

sudo chown -R hadoop:hadoop hive            # 修改文件权限

  • 配置hive环境

sudo apt-get install vim   安装vim

vim ~/.bashrc

export HIVE_HOME=/usr/local/hive

export PATH=$PATH:$HIVE_HOME/bin

source ~/.bashrc

  • 配置Hive

运行 Hive 之前需要使用以下命令修改配置文件:

cd /usr/local/hive/conf

cp hive-env.sh.template hive-env.sh

cp hive-default.xml.template hive-site.xml

cp hive-log4j2.properties.template hive-log4j2.properties

cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties

  • 修改hive-env.sh

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_79    ##Java路径

export HADOOP_HOME=/usr/local/hadoop   ##Hadoop安装路径

export HIVE_HOME=/usr/local/hive    ##Hive安装路径

export HIVE_CONF_DIR=/usr/local/hive/conf    ##Hive配置文件路径

  • 创建HDFS目录

在 Hive 中创建表之前需要创建以下 HDFS 目录并给它们赋相应的权限。

hdfs dfs -mkdir -p /user/hive/warehouse

hdfs dfs -mkdir -p /user/hive/tmp

hdfs dfs -mkdir -p /user/hive/log

hdfs dfs -chmod g+w /user/hive/warehouse

hdfs dfs -chmod g+w /user/hive/tmp

hdfs dfs -chmod g+w /user/hive/log

  • 修改hive-site.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

  <property>

    <name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>

    <description>JDBC connect string for a JDBC metastore</description>

  </property>

  <property>

    <name>javax.jdo.option.ConnectionDriverName</name>

    <value>com.mysql.jdbc.Driver</value>

    <description>Driver class name for a JDBC metastore</description>

  </property>

  <property>

    <name>javax.jdo.option.ConnectionUserName</name>

    <value>hive</value>

    <description>username to use against metastore database</description>

  </property>

  <property>

    <name>javax.jdo.option.ConnectionPassword</name>

    <value>hive</value>

    <description>password to use against metastore database</description>

  </property>

</configuration>

  • 安装并配置mysql

sudo apt-get install mysql-server  #安装mysql

service mysql start  启动MySQL

service mysql stop  停止MySQL

sudo netstat -tap | grep mysql  查看是否启动成功

mysql -u root –p 进入MySQL shell 页面

  • 创建一个 hive 数据库用来存储 Hive 元数据,且数据库访问的用户名和密码都为 hive

mysql> CREATE DATABASE hive;

mysql> USE hive;

mysql> CREATE USER 'hive'@'localhost' IDENTIFIED BY 'hive';

mysql> GRANT ALL ON hive.* TO 'hive'@'localhost' IDENTIFIED BY 'hive';

mysql> GRANT ALL ON hive.* TO 'hive'@'%' IDENTIFIED BY 'hive';

mysql> FLUSH PRIVILEGES;

mysql> quit;

  • 安装MySQL jdbc

tar -zxvf ~/下载/mysql-connector-java-5.1.39.tar.gz –c /usr/local/hive解压

cp /usr/local/hive/mysql-connector-java-5.1.40/mysql-connector-java-5.1.40 -bin.jar  /usr/local/hive/lib          #将mysql-connector-java-5.1.40-bin.jar拷贝到/usr/local/hive/lib目录下

  • 运行之前先初始化操作 

schematool -initSchema -dbType mysql

  • 启动hadoop

start-all.sh

  • 启动hive

hive

  • hive命令创建数据表

hive>drop table if exists student ;

hive>CREATE TABLE student(

hive>id int,

hive>name string)

hive>ROW FORMAT DELIMITED

hive>FIELDS TERMINATED BY ',';

  • 将文件上传到hdfs中的目录下

hdfs dfs -mkdir -p /user/hive/abc  创建目录

hdfs dfs -put ~/下载/stu.txt /user/hive/abc

  • 加载数据

hive>load data inpath '/user/hive/abc/stu.txt' overwrite into table student ;

  • 查询数据

hive>select * from student ;

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值