Hadoop安装

Hadoop安装,第1张

创建hadoop用户

1、sudo useradd -m hadoop

2、sudo passwd hadoop

3、sudo adduser hadoop sudo

4、虚拟机:最后注销当前用户(点击屏幕右上角的齿轮,选择注销),返回登陆界面。在登陆界面中选择刚创建的hadoop 用户进行登陆。

5、重新登录检查当前用户是谁:whoami 出现hadoop 成功

6、更新aptsudo apt-get update更新apt3.安装SSH,

7、配置免密登陆sudo apt-get install sshsudo apt-get install pdsh 安装ssh

8、安装Java环境sudo apt install openjdk-8-jdk 安装java

9、vim ~/.bashrc 进入之后按I 然后输入export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 

10、按esc 然后按:wq! 回车 完成 此步骤改变环境变量source ~/.bashrc输入java -version检验

11、安装Hadoopwget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz 安装命令

12、sudo tar -zxf ~/hadoop-2.9.2.tar.gz -C /usr/local 解压命令

13、cd /usr/local/ #进入用户安装目录

14、sudo mv ./hadoop-2.9.2/ ./hadoopsudo chown -R hadoop ./hadoop # 修改文件权限(hadoop-2.9.2默认拥有者是root,这里我们让hadoop也成为拥有者)

15、cd /usr/local/hadoop./bin/hadoop version # 查看hadoop版本信息,成功显示则安装成功

16、cd /usr/local/hadoop进入目录

17、mkdir ./input创建目录

18、ls查看当前目录

19、cp ./etc/hadoop/*.xml ./input

20、./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'

21、cat ./output/*查看

22、rm -r ./output删除output文件

23、 cd /usr

24、 cd local

25、ls

26、 cd hadoop

27、 ls

28、cd  /usr/local/hadoop/etc/hadoop/

29、Ls

30、vi hdfs-site.xml

31、cd /usr/local/hadoop

说明:在安装好Centos系统后,用root创建一般用户hadoop,在hadoop用户下搭建Hadoop集群,故很多文件的路径均为/home/hadoop…下面介绍一般步骤:

1.创建一批普通用户,如test01、test02…并为其设置密码,命令如下:

useradd test01 创建用户

passwd test01 为test01设置密码

1

2

1

2

2.把该批普通用户加入hadoop用户组

gpasswd -a test01 hadoop把用户test01加入hadoop用户组

1

1

注:在文件/etc/passwd中记录着系统所有的用户;在文件/etc/shadow中记录着所有用户的密码,并一一对应;在文件/etc/group中记录着所有的用户组。

3.由于在/home/hadoop/.bashrc中配置了相关的环境变量,在启动spark-shell、hive、hbase时不需要加入相关路径,为了便于普通用户test01等的 *** 作,在test01等用户的.bashrc文件中配置相关环境变量,并用source ~./bashrc使其生效。

4.按照上述步骤设置后,可以正常启动spark-shell与hbase shell,但启动hive时出现报错:

Permission denied:user=test01,access=EXECUTE,inode="/tmp/hive":hadoop:supergroup:drwxrwx---

1

1

出现这个问题的原因是在hdfs上目录/tmp/hive的所有者为hadoop,所属用户组为supergroup,而相对于该目录用户test01属于其他用户,不具有任何权限,这里报错是不具有EXECUTE权限,要想解决这个问题,需要修改/tmp/hive的权限,命令如下:

hdfs dfs -chmod 777 /tmp修改/tmp的权限

1

1

再次启动hive便不会再报该错误。

5.在hadoop用户上可以正常运行如下程序,但是在test01用户登录运行时抛出异常

hadoop jar hadoop jar /home/hadoop/hadoop2.7.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /test/input /test/output

1

1

注:这里运行的是wordcount示例,/test/input为数据所在路径;/test/output为输出结果目录,运行时自动创建。

在test01用户上执行该程序时抛出如下异常:

这里写图片描述

出现这个异常的原因是:

原来mapreduce.jobhistory.address 和mapreduce.jobhistory.webapp.addres 这两个address的地址使用的是CDH默认的配置值,这里需要改成hostname,这样可能就是原来的位置不对造成的。

这里参考了(http://blog.csdn.net/wjcquking/article/details/41242625)

发现需要在hadoop的配置文件mapred.site.xml中添加如下内容:

</property>

<property>

<name>mapreduce.jobhistory.address</name>

<value>master:10020</value> #master为hostname

</property>

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>master:19888</value>

</property>

<property>

<name>yarn.app.mapreduce.am.staging-dir</name>

<value>/user</value> #/user为hdfs上的一个目录

</property>

1

2

3

4

5

6

7

8

9

10

11

12

13

1

2

3

4

5

6

7

8

9

10

11

12

13

在mapred.site.xml中添加如下内容后,把该文件发送到集群其余的机器;在hdfs上创建/user并修改其权限,使得用户test01对其有写权限。由于程序运行时要在hdfs上自动创建/test/output结果目录,则用户test01要对hdfs有写权限,这里为了便于 *** 作,修改hdfs权限为777.

至此,wordcount示例可以正常运行。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11885427.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存