centos/ubuntu环境下hadoop伪分布式搭建

本人是学生一枚,前段时间参加了省里举办的高校“大数据技术与应用”竞赛。作为一名小白,从搭建环境学起,遇到了各种问题。用到了hadoop、linux、spark、scalahive、sqoop、hbase、mysql。现把自己整理的过程分享出来。本人分享的都是非常浅显的技术,在本机中运行几次没有问题的成果,命令都是直接可以复制使用,供大家参考。

本教程使用的文件都在我的某度网盘里 大家有需要可以自行下载  pan.baidu.com/s/1i4UdHNR  密码 whpd

来个防和谐的 屁A恩 点 baidu 点 谁喔m/s/1i4UdHNR密码 whpd 

本教程对从没接触过linux和hadoop的同学有用,大神请忽视。有些出错的问题是直接网上找到的解决办法,大家自己选择判断。

开发环境:win10 

VMware Workstation Pro12 

ubuntu16.04 、centos 6.5、centos7   (以下$ 后面跟着的命令即为终端输入的命令 复制时去掉$)


1、本人使用vm创建的虚拟机,建议大家安装完linux系统以后,先装上vmware tool,vmware tool安装完成后要重启一下虚拟机,这样就可以把win10(原系统)里面的文件或文字直接复制粘贴到linux中了。


1.1、首先在安装的虚拟机上面点击右键 


我这里已经安装完成,未安装时显示的是更新 vmware tools ,点击后会在你虚拟机桌面上显示一个cd盘,打开就是安装文件,或者在文件管理器左边同样打开即是安装文件。


在这里说明一下,linux的压缩包是***.tar.gz 结尾的,不是Windows的zip或者rar。


1.2本人linux系统中的用户名是hadoop,linux中home文件夹下的hadoop文件夹是用户直接可以操作的,删除、修改、从Windows里面拖拽文件到hadoop文件夹。其他文件夹是在 \ 目录下的,有时用户不能直接操作,因此安装文件一般都需要把文件放到home/hadoop 中 再安装到其他文件夹。图中打开home文件夹里面就有个hadoop文件夹,这里就不截图展示了,不懂的同学自行百度下linux的文件目录结构就明白了。



1.3 、vmware tools.tar.gz 复制到hadoop文件夹下。在桌面空白处点击右键---打开终端。输入以下命令:

-----------------------------------------------------------------------------------------

$ cd /home/hadoop  

//先进入hadoop目录

sudo tar -zxvf VMwareTools-9.9.3-2759765.tar.gz -C /usr/local

//vmtools解压到 usr/local目录中大家也可以解压到optvar但是一般书本都解压到local咱们按惯例吧·

cd /usr/local

//进入local目录

ls

//ls是列出文件夹中的所有文件、文件夹,当然也可以用鼠标进目录管理器进行查看。

cd vmware-tools-distrib

// 我这里解压完成后是这个vmware-tools-distrib名字

//这里说个小技巧 假如文件夹里只有某个名字 输入如vm 然后按tab键系统会自动补全后面的名字vmware-tools-distrib

sudo vmware-install.pl

// vmware-tools-distrib 文件夹下有个vmware-install.pl 安装即可 安装过程中会有yes或no 一路enter yes就可以

成功后会提示enjoy vm····  重启reboot后就可以使用vm tools

----------------------------------------------------------------------------------------------------

2、准备工作 关闭防火墙 实现ssh免密码登陆


2.1、CentOS 6.x中,可以通过如下命令关闭防火墙:

sudo service iptables stop   # 关闭防火墙服务

sudo chkconfig iptables off  # 禁止防火墙开机自启,就不用手动关闭了

centos7.0 中的关闭方法不一样 是

直接关闭防火墙

systemctl stop firewalld.service        #停止firewall

systemctl disable firewalld.service   #禁止firewall开机启动

ubuntu中默认关闭了防火墙

sudo ufw status     #查看防火墙状态

sudo ufw disable    #关闭防火墙


2.2一般情况下,CentOS 默认已安装了 SSH client、SSH server,打开终端执行如下命令进行检验:

rpm -qa | grepssh

如果返回的结果包含了 SSH client 跟 SSH server,则不需要再安装。

若需要安装,则可以通过 yum 进行安装(安装过程中会让你输入 [y/N],输入 y 即可):

sudo yum install openssh-clients                在ubuntu中 使用这个命令安装 :sudo apt-get install ssh

sudo yum install openssh-server

接着执行如下命令测试一下 SSH是否可用:

ssh localhost

此时会有如下提示(SSH首次登陆提示),输入 yes 。然后按提示输入密码000000(我这里是六个0),这样就登陆到本机了。

但这样登陆是需要每次输入密码的,我们需要配置成SSH无密码登陆。

首先输入 exit 退出刚才的 ssh,就回到了我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中:

exit                           # 退出刚才的 ssh localhost

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

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

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

chmod 600 ./authorized_keys    # 修改文件权限

此时再用 ssh localhost 命令,无需输入密码就可以直接登陆了。


3、安装java hadoop是在java基础上运行的 

大家自行去java官网下载linux 使用的jdk 这里我直接上命令 (jdk安装包存到home/hadoop文件夹里)

cd /home/hadoop

sudo tar -zxvf jdk-7u91-linux-x64.tar.gz -C /usr/local               #解压到/usr/local目录下

cd /usr/local 

ls                                      #查看解压后的名字

sudo mv jdk***** jdk          # 将文件夹名改为jdk   mv 原名 新名

#接着需要配置一下JAVA_HOME 环境变量,为方便,我们在 ~/.bashrc 中进行设置

vim ~/.bashrc

#vim编辑器使用方法: 按键盘字母 i 进行插入编辑 完成后按键盘Esc 会发现编辑光标没有了 这时候键盘按 shift+:键 会出现一个冒号

#输入 wq 是保存退出 /输入 q 是直接退出 /输入 !q  是强制退出

#输入 i 直接复制下面代码

export JAVA_HOME=/usr/local/jdk     

export PATH=${JAVA_HOME}/bin:$PATH

export JRE_HOME=${JAVA_HOME}/jre                     #可以没有

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  #可以没有

#输入:wq 退出

source ~/.bashrc  # 务必要保存 java环境才能配置生效

#在终端里输入 

java -version 


显示版本了 即为配置成功


4、安装hadoop 配置环境变量


4.1、Hadoop 2 可以通过 http://mirror.bit.edu.cn/apache/hadoop/common/ 或者http://mirrors.cnnic.cn/apache/hadoop/common/ 下载

大家自行去官网下载hadoop 这里我直接上命令 (hadoop安装包存到home/hadoop文件夹里)

cd /home/hadoop

sudo cp -r hadoop-2.6.5.tar.gz -C /usr/local

cd /usr/local

sudo mv hadoop-2.6.5 hadoop           # 将文件夹名改为hadoop

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

#这是上面句子的解释 递归修改文件夹my及包含的所有子文件(夹)的所属用户(jay)和用户组(fefjay):

chown -R jay:fefjay my #修改文件所属用户为jay,所属用户组为fefjay
#我这里是hadoop用户 hadoop用户组

vim ~/.bashrc 

#复制粘贴

export HADOOP_HOME=/usr/local/hadoop                

#改成自己安装后文件夹的名字 我之前已经改为hadoop

export HADOOP_INSTALL=$HADOOP_HOME

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export YARN_HOME=$HADOOP_HOME

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$HADOOP_HOME/bin:$PATH
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

source ~/.bashrc  #保存

#在这里  终端中输入以下命令 就能看到hadoop的版本了 

cd/usr/local/hadoop

./bin/hadoop version  

4.2、#Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 #DataNode,同时,读取的是 HDFS 中的文件。Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个#配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。

cd /usr/local/hadoop/etc/hadoop          #进入目录 修改core-site.xml 和 hdfs-site.xml 

ls    #看到相关文件

vim core-site.xml

#将当中的         <configuration></configuration> (这两个在文件的最后两行)              修改为下面配置:

 ----------------------------------------------------------------------------复制粘贴即可

<configuration>

<property>

<!-- 指定hadoop运行时产生文件的存储路径 -->

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

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

        <description>A base for othertemporary directories.</description>

    </property>

<property>

<!-- namenode的通信地址 -->

        <name>fs.defaultFS</name>

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

    </property>

</configuration>

-----------------------------------------------------------------------------      : wq 退出

#同样的,修改配置文件 hdfs-site.xml:

vim hsfs-site.xml

-------------------------------------------------------------复制粘贴

<configuration>

<property>

<!-- 设置hdfs副本数量 -->

       <name>dfs.replication</name>

       <value>1</value>

    </property>

<property>

<!-- namenode 存放 name table 的目录 -->

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

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

    </property>

<property>

<!-- datanode 存放数据 block 的目录 -->

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

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

    </property>

</configuration>

-----------------------------------------------------------------          :wq

#使用终端 输入 下面  

 cd    #回到根目录

 hdfsnamenode -format           #输入这个

成功的话,会看到 "successfully formatted" 和"Exitting with status 0"的提示 若为 "Exitting with status1" 则是出错。

回去检查防火墙 、ssh 和 core-site.xml 和 hdfs-site.xml是否输入对。


#如果在这一步时提示 Error: JAVA_HOME is not set and could not be found. 的错误,则说明之前设置 JAVA_HOME 环境变量那边就没设置好,请按教程先设置好 JAVA_HOME 变量,否则后面的过程都是进行不下去的。如果已经按照前面教程在.bashrc文件中设置了JAVA_HOME,还是出现 Error: JAVA_HOME is not set and could not be found. 的错误,那么,请到hadoop的安装目录修改配置文件“/usr/local/hadoop/etc/hadoop/hadoop-env.sh”,在里面找到“export JAVA_HOME=${JAVA_HOME}”这行,然后,把它修改成JAVA安装路径的具体地址,比如,“export JAVA_HOME=/usr/local/jdk”,然后,再次启动Hadoop。

#接着开启 NameNode 和 DataNode 守护进程。 终端输入

./sbin/start-dfs.sh                                     #start-dfs.sh 是个完整的可执行文件,中间没有空格

#若出现如下SSH提示,输入yes即可。


启动时可能会出现如下 WARN 提示:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable WARN 提示可以忽略,并不会影响正常使用。

启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: "NameNode"、"DataNode" 和 "SecondaryNameNode"(如果 SecondaryNameNode 没有启动,请运行 sbin/stop-dfs.sh 关闭进程,然后再次尝试启动尝试)。如果没有 NameNode 或 DataNode ,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。


此外,若是 DataNode 没有启动,可尝试如下的方法(注意这会删除 HDFS 中原有的所有数据,如果原有的数据很重要请不要这样做):

# 针对 DataNode 没法启动的解决方法

./sbin/stop-dfs.sh                                         # 关闭

rm-r ./tmp                                                   # 删除 tmp 文件,注意这会删除 HDFS 中原有的所有数据

./bin/hdfs namenode -format                     # 重新格式化 NameNode

./sbin/start-dfs.sh                                       # 重启

#成功启动后,可以访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。

#下次启动 hadoop 时,无需进行 NameNode 的初始化,只需要运行 ./sbin/start-dfs.sh 就可以!我个人比较喜欢

直接终端输入 start-all.sh

4.3、启动Yarn             先关闭hadoop    ./sbin/stop-dfs.sh  或者 stop-all.sh

(伪分布式不启动 YARN 也可以,一般不会影响程序执行)

YARN 是从 MapReduce 中分离出来的,负责资源管理与任务调度。YARN 运行于 MapReduce 之上,提供了高可用性、高扩展性,YARN 的更多介绍在此不展开,有兴趣的可查阅相关资料。上述通过./sbin/start-dfs.sh 启动 Hadoop,仅仅是启动了 MapReduce 环境,我们可以启动 YARN ,让 YARN 来负责资源管理与任务调度。

下面直接上命令

cd /usr/local/hadoop/etc/hadoop          #进入目录

ls                                                                #可以看到相关文件

#首先修改配置文件mapred-site.xml,源文件是mapred-site.xml.template 这边需要先进行重命名:

mv mapred-site.xml.template mapred-site.xml

#然后再进行编辑

vim mapred-site.xml

----------------------------------- ------------复制粘贴

<configuration>

<property>

<!-- 通知框架MR使用YARN -->

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

        <value>yarn</value>

    </property>

</configuration>

-------------------------------------------  :wq 保存

#接着修改配置文件yarn-site.xml:

vim yarn-site.xml

----------------------------------------------复制粘贴

<configuration>

<!-- reducer取数据的方式是mapreduce_shuffle -->

    <property>

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

       <value>mapreduce_shuffle</value>

        </property>

</configuration>

------------------------------------------ :wq保存

# 然后就可以启动 YARN 了(需要先执行过 ./sbin/start-dfs.sh)或者配置好直接start-all.sh 下面start-yarn.sh 也省略了

./sbin/start-yarn.sh      #启动YARN         

#开启后通过 jps 查看,可以看到多了 NodeManager 和 ResourceManager 两个后台进程




注意:按上面的命令直接敲是完全可以的,假如出错了我上面有一些出错的例子,其他错误百度一下也能解决。注意看终端中提示的error 那一行 。

1、假如你创建的是A用户 不想用A来配环境 直接再创建一个用户即可。下面是步骤

1.1、ubuntu中创建hadoop用户

sudo useradd –m hadoop –s /bin/bash   #终端中输入这个命令

#上面这条命令创建了可以登陆的 hadoop用户,并使用 /bin/bash 作为 shell

#接着使用如下命令设置密码,可简单设置为 123456,按提示输入两次密码:

sudo passwd hadoop

#可为 hadoop 用户增加管理员权限 这一步强烈建议做

sudo adduser hadoop sudo

#注销后登陆就看到新用户hadoop了


1.2 centos中创建hadoop用户

sudo useradd –m hadoop –s /bin/bash   #终端中输入这个命令

#上面这条命令创建了可以登陆的 hadoop用户,并使用 /bin/bash 作为 shell

#接着使用如下命令设置密码,可简单设置为 123456,按提示输入两次密码:

sudo passwd hadoop

#可为 hadoop 用户增加管理员权限 这一步强烈建议做

vim  /etc/sudoers           #终端中输入这个 与ubuntu不一样

#找到文件里面有下面一行 root  ALL```````

#   root  ALL=(ALL)    ALL       #在这一行下面添加 

hadoop ALL=(ALL)    ALL    # hadoop是新增的用户

# :wq 保存退出

#注销后登陆就看到新用户hadoop了

建议登陆后使用在终端中输入 su 输入密码进入root用户进行以上所有java hadoop操作

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值